The previous example is missing the first startObject/endObject:
new PutMappingRequestBuilder(newClient
.admin().indices())
.setIndices(INDEX_NAME)
.setType(INDEX_TYPE)
.setSource(jsonBuilder().startObject().startObject(INDEX_TYPE)
.startObject("properties")
.startObject("suggest")
.field("type", "completion")
.endObject()
.endObject()
.endObject()
.endObject().execute().actionGet());
Dan
On Tuesday, April 15, 2014 3:44:23 PM UTC+1, Dan Tuffery wrote:
>
> You're missing the index 'type' and 'properties' objects from the index
> mapping. Change it to:
>
> new PutMappingRequestBuilder(newClient
> .admin().indices())
> .setIndices(INDEX_NAME)
> .setType(INDEX_TYPE)
> .setSource(jsonBuilder().startObject(INDEX_TYPE)
> .startObject("properties")
> .startObject("suggest")
> .field("type", "completion")
> .endObject()
> .endObject()
> .endObject().execute().actionGet());
>
> Which will create the JSON:
>
> {
> "test": {
> "properties": {
> "suggest": {
> "type": "completion"
> }
> }
> }
> }
>
> Dan
>
> On Tuesday, April 15, 2014 2:31:01 PM UTC+1, Bill Wortinger wrote:
>>
>> Hey Dan!
>>
>> Thanks for the code snippet, it's actually helped me narrow down my
>> problem considerably. I'm getting the error;
>>
>> field 'suggest' is not a completion suggest field.
>>
>> To my knowledge, you define it as a completion suggest field with the
>> type in the mapping.
>>
>> .field("suggest").startObject().field("type", "completion").endObject()
>>
>> Thanks!
>>
>>
>>
>> On Fri, Apr 11, 2014 at 1:11 AM, Dan Tuffery <[email protected]> wrote:
>>
>>> I did a quick test, this works:
>>>
>>> *Create mapping*
>>>
>>> curl -XPUT 'http://localhost:9200/example/test/_mapping' -d
>>> '{
>>> "test": {
>>> "properties": {
>>> "my_suggest": {
>>> "type": "completion"
>>> }
>>> }
>>> }
>>> }'
>>>
>>> *Index value*
>>>
>>> curl -XPUT 'http://localhost:9200/example/test/1/' -d
>>> '{
>>> "my_suggest": "FooFighters"
>>> }'
>>>
>>> *Java API code*
>>>
>>> CompletionSuggestionBuilder compBuilder = new
>>> CompletionSuggestionBuilder("my_suggest");
>>> compBuilder.text("Foo");
>>> compBuilder.field("my_suggest");
>>>
>>> SuggestRequestBuilder suggestRequestBuilder = client
>>> .prepareSuggest("example").addSuggestion(compBuilder);
>>>
>>> SuggestResponse suggestResponse =
>>> suggestRequestBuilder.execute().actionGet();
>>> CompletionSuggestion compSuggestion =
>>> suggestResponse.getSuggest().getSuggestion("my_suggest");
>>>
>>> List<CompletionSuggestion.Entry> entryList = compSuggestion.getEntries();
>>> if (entryList != null) {
>>> CompletionSuggestion.Entry entry = entryList.get(0);
>>> List<CompletionSuggestion.Entry.Option> options = entry.getOptions();
>>> if (options != null) {
>>> CompletionSuggestion.Entry.Option option = options.get(0);
>>> //the value of toReturn is 'FooFighters'
>>> String toReturn = option.getText().string()
>>> }
>>>
>>> Dan
>>>
>>>
>>> On Thursday, April 10, 2014 2:50:05 PM UTC+1, Bill Wortinger wrote:
>>>
>>>> Hello Dan, thanks again for all the help but I can't seem to get
>>>> anything to return. Here is my full code, there has to be something I'm
>>>> missing. Maybe in the indexing, the mapping?
>>>>
>>>> Mapping:
>>>> putMappingResponse = new PutMappingRequestBuilder(newClient
>>>> .admin().indices())
>>>> .setIndices(INDEX_NAME)
>>>> .setType(INDEX_TYPE)
>>>> .setSource(jsonBuilder().startObject("suggest")
>>>> .field("type", "completion")
>>>> .endObject().execute().actionGet());
>>>>
>>>> Method:
>>>> public String searchSuggestions(String suggestion) {
>>>> // Creates suggestions based on Document Titles.
>>>> String toReturn = "";
>>>>
>>>> Client localClient = getElasticSearchClient();
>>>>
>>>> CompletionSuggestionBuilder compBuilder = new
>>>> CompletionSuggestionBuilder("completion");
>>>> compBuilder.text(suggestion);
>>>> compBuilder.field("suggest");
>>>>
>>>> SuggestRequestBuilder suggestRequestBuilder = localClient
>>>> .prepareSuggest(INDEX_NAME).addSuggestion(compBuilder);
>>>>
>>>> SuggestResponse suggestResponse = suggestRequestBuilder.execute(
>>>> ).actionGet();
>>>> CompletionSuggestion compSuggestion = suggestResponse.getSuggest().
>>>> getSuggestion("completion");
>>>>
>>>> List<CompletionSuggestion.Entry> entryList =
>>>> compSuggestion.getEntries();
>>>> if (entryList != null) {
>>>> CompletionSuggestion.Entry entry = entryList.get(0);
>>>> List<CompletionSuggestion.Entry.Option> options = entry.getOptions();
>>>> if (options != null) {
>>>> CompletionSuggestion.Entry.Option option = options.get(0);
>>>> toReturn = option.getText().string();
>>>> }
>>>> }
>>>> return toReturn;
>>>> }
>>>>
>>>> Index:
>>>> response = localClient.prepareIndex(INDEX_NAME, INDEX_TYPE)
>>>> .setSource(jsonBuilder().startObject("suggest").field("
>>>> input","FooFighters").endObject()).execute().actionGet();
>>>>
>>>> Thanks for all the help, I'm basically shooting in the dark hoping
>>>> somebody with more experience can spot the issue.
>>>>
>>>>
>>>>
>>>>
>>>>
>>>> On Wed, Apr 9, 2014 at 3:56 AM, Dan Tuffery <[email protected]> wrote:
>>>>
>>>>> This looks wrong,
>>>>>
>>>>> *Suggest.Suggestion.Entry.Option option2 =
>>>>> suggestResponse.getSuggest().getSuggestion("completion").getEntries().get(0).getOptions().get(0);*
>>>>>
>>>>> it should be:
>>>>>
>>>>> *Suggest.Suggestion.Entry.Option option2 = *
>>>>> *suggestResponse.getSuggest().getSuggestion("suggest").getEntries().get(0).getOptions().get(0);*
>>>>>
>>>>> Where *getSuggestion* is getting the field name you supplied in the
>>>>> request.
>>>>>
>>>>> Dan
>>>>>
>>>>>
>>>>> So it looks like your query is returning zero results. Can you see
>>>>> values indexed for the field 'at'
>>>>>
>>>>>
>>>>> On Tuesday, April 8, 2014 4:07:57 PM UTC+1, Bill Wortinger wrote:
>>>>>
>>>>>> Great resource! Thank you,
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> *CompletionSuggestionBuilder compBuilder = new
>>>>>> CompletionSuggestionBuilder("completion");
>>>>>> compBuilder.text(suggestion); compBuilder.field("suggest");
>>>>>>
>>>>>> SuggestRequestBuilder suggestRequestBuilder =
>>>>>> localClient.prepareSuggest(INDEX_NAME)
>>>>>> .addSuggestion(compBuilder); SuggestResponse
>>>>>> suggestResponse
>>>>>> = suggestRequestBuilder.execute().actionGet();*
>>>>>>
>>>>>> When executing
>>>>>>
>>>>>>
>>>>>> *Suggest.Suggestion.Entry.Option option2 =
>>>>>> suggestResponse.getSuggest().getSuggestion("completion").getEntries().get(0).getOptions().get(0);
>>>>>>
>>>>>> *
>>>>>> A null is returned.
>>>>>>
>>>>>> Below is my index.
>>>>>>
>>>>>> *.startObject("suggest").field("type", "completion").endObject()*
>>>>>>
>>>>>> Thanks again!
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> On Tue, Apr 8, 2014 at 9:14 AM, Dan <[email protected]> wrote:
>>>>>>
>>>>>>> What is the issue you're seeing? Have a look at the examples in the
>>>>>>> tests:
>>>>>>>
>>>>>>> https://github.com/elasticsearch/elasticsearch/blob/master/
>>>>>>> src/test/java/org/elasticsearch/search/suggest/CompletionSug
>>>>>>> gestSearchTests.java
>>>>>>>
>>>>>>> Dan
>>>>>>>
>>>>>>>
>>>>>>> On Tuesday, April 8, 2014 1:43:29 PM UTC+1, Bill Wortinger wrote:
>>>>>>>>
>>>>>>>> Thanks for the heads up Alex, I'll remove the .setTypes().
>>>>>>>>
>>>>>>>> Dan, this is what I have so far;
>>>>>>>>
>>>>>>>> CompletionSuggestionBuilder compBuilder = new
>>>>>>>> CompletionSuggestionBuilder("complete");
>>>>>>>> compBuilder.text('n");
>>>>>>>> compBuilder.field("suggest");
>>>>>>>> SuggestRequestBuilder suggestRequestBuilder =
>>>>>>>> client.prepareSuggest(INDEX_NAME);
>>>>>>>> suggestRequestBuilder.addSuggestion(compBuilder);
>>>>>>>> SuggestResponse suggestResponse = suggestRequestBuilder.execute(
>>>>>>>> ).actionGet();
>>>>>>>>
>>>>>>>> CompletionSuggestion compSuggestion = suggestResponse.getSuggest().
>>>>>>>> getSuggestion("complete");
>>>>>>>>
>>>>>>>> List<CompletionSuggestion.Entry> entryList =
>>>>>>>> compSuggestion.getEntries();
>>>>>>>> if(entryList != null) {
>>>>>>>> CompletionSuggestion.Entry entry = entryList.get(0);
>>>>>>>> List<CompletionSuggestion.Entry.Option> options
>>>>>>>> =entry.getOptions();
>>>>>>>> if(options != null) {
>>>>>>>> CompletionSuggestion.Entry.Option option =
>>>>>>>> options.get(0);
>>>>>>>> toReturn = option.getText().string();
>>>>>>>> }
>>>>>>>> }
>>>>>>>> return toReturn;
>>>>>>>>
>>>>>>>> I've made progress! But now it's falling apart when I try parsing
>>>>>>>> the entries from the suggestReponse. So, am I doing this correctly?
>>>>>>>> Missing
>>>>>>>> something?
>>>>>>>>
>>>>>>>> Thanks!
>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>> On Monday, April 7, 2014 6:26:37 AM UTC-4, Dan wrote:
>>>>>>>>>
>>>>>>>>> Use the SuggestRequestBuilder, i.e.
>>>>>>>>>
>>>>>>>>> CompletionSuggestionBuilder compBuilder = new
>>>>>>>>> CompletionSuggestionBuilder("complete");
>>>>>>>>> compBuilder.text("n");
>>>>>>>>> compBuilder.field("suggest");
>>>>>>>>>
>>>>>>>>> SuggestRequestBuilder suggestRequestBuilder =
>>>>>>>>> client.prepareSuggest(INDEX_NAME);
>>>>>>>>> suggestRequestBuilder.addSuggestion(compBuilder);
>>>>>>>>> SuggestResponse suggestResponse = suggestRequestBuilder.execute(
>>>>>>>>> ).actionGet();
>>>>>>>>>
>>>>>>>>> Dan
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> On Mon, Apr 7, 2014 at 8:49 AM, Alexander Reelsen <
>>>>>>>>> [email protected]> wrote:
>>>>>>>>>
>>>>>>>>>> Hey,
>>>>>>>>>>
>>>>>>>>>> looks ok. Minor note: Types are simply ignored for suggestions.
>>>>>>>>>> What are you getting back? Nothing?
>>>>>>>>>> Can you create a fully working gist, including creation of the
>>>>>>>>>> mapping and indexing? Then debugging and finding your possible cause
>>>>>>>>>> would
>>>>>>>>>> be a lot easier.
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> --Alex
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> On Fri, Apr 4, 2014 at 4:02 PM, Bill Wortinger <[email protected]
>>>>>>>>>> > wrote:
>>>>>>>>>>
>>>>>>>>>>> I have my indices created, and mapping type for my 'suggest'
>>>>>>>>>>> field set to completion. I can't figure out how to configure the
>>>>>>>>>>> query for
>>>>>>>>>>> completion suggestions in elastic-search (Java API).
>>>>>>>>>>>
>>>>>>>>>>> I'm trying to use this Query to base my implementation off of.
>>>>>>>>>>> "song-suggest" : { "text" : "n", "completion" : { "field" :
>>>>>>>>>>> "suggest" } } Here's
>>>>>>>>>>> what I have so far,
>>>>>>>>>>>
>>>>>>>>>>> CompletionSuggestionBuilder compBuilder = new
>>>>>>>>>>> CompletionSuggestionBuilder("complete");
>>>>>>>>>>> compBuilder.text("n..");
>>>>>>>>>>> compBuilder.field("suggest");
>>>>>>>>>>>
>>>>>>>>>>> SearchResponse searchResponse =
>>>>>>>>>>> localClient.prepareSearch(INDEX_NAME)
>>>>>>>>>>> .setTypes("completion")
>>>>>>>>>>> .setQuery(QueryBuilders.matchAllQuery())
>>>>>>>>>>> .addSuggestion(compBuilder)
>>>>>>>>>>> .execute().actionGet();
>>>>>>>>>>>
>>>>>>>>>>> CompletionSuggestion compSuggestion =
>>>>>>>>>>> searchResponse.getSuggest().getSuggestion("complete");
>>>>>>>>>>>
>>>>>>>>>>> Am I missing something, doing something wrong? Thanks!
>>>>>>>>>>>
>>>>>>>>>>> --
>>>>>>>>>>> You received this message because you are subscribed to the
>>>>>>>>>>> Google Groups "elasticsearch" group.
>>>>>>>>>>> To unsubscribe from this group and stop receiving emails from
>>>>>>>>>>> it, send an email to [email protected].
>>>>>>>>>>> To view this discussion on the web visit
>>>>>>>>>>> https://groups.google.com/d/msgid/elasticsearch/06792c37-646
>>>>>>>>>>> c-4b59-bdb3-f23cc51bd134%40googlegroups.com<https://groups.google.com/d/msgid/elasticsearch/06792c37-646c-4b59-bdb3-f23cc51bd134%40googlegroups.com?utm_medium=email&utm_source=footer>
>>>>>>>>>>> .
>>>>>>>>>>> For more options, visit https://groups.google.com/d/optout.
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> --
>>>>>>>>>> You received this message because you are subscribed to the
>>>>>>>>>> Google Groups "elasticsearch" group.
>>>>>>>>>> To unsubscribe from this group and stop receiving emails from it,
>>>>>>>>>> send an email to [email protected].
>>>>>>>>>> To view this discussion on the web visit
>>>>>>>>>> https://groups.google.com/d/msgid/elasticsearch/CAGCwEM9D76G
>>>>>>>>>> mrXqdnBy%3DkstCN4NDtfkS3X%3DyXd0uMdTVpSUBvg%40mail.gmail.com<https://groups.google.com/d/msgid/elasticsearch/CAGCwEM9D76GmrXqdnBy%3DkstCN4NDtfkS3X%3DyXd0uMdTVpSUBvg%40mail.gmail.com?utm_medium=email&utm_source=footer>
>>>>>>>>>> .
>>>>>>>>>>
>>>>>>>>>> For more options, visit https://groups.google.com/d/optout.
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>> --
>>>>>>> You received this message because you are subscribed to a topic in
>>>>>>> the Google Groups "elasticsearch" group.
>>>>>>> To unsubscribe from this topic, visit https://groups.google.com/d/to
>>>>>>> pic/elasticsearch/06nbxJnYfDo/unsubscribe.
>>>>>>> To unsubscribe from this group and all its topics, send an email to
>>>>>>> [email protected].
>>>>>>> To view this discussion on the web visit
>>>>>>> https://groups.google.com/d/msgid/elasticsearch/f6e28fc8-cef
>>>>>>> 5-4f13-8dce-04e0bcfc5404%40googlegroups.com<https://groups.google.com/d/msgid/elasticsearch/f6e28fc8-cef5-4f13-8dce-04e0bcfc5404%40googlegroups.com?utm_medium=email&utm_source=footer>
>>>>>>> .
>>>>>>>
>>>>>>> For more options, visit https://groups.google.com/d/optout.
>>>>>>>
>>>>>>
>>>>>> --
>>>>> You received this message because you are subscribed to a topic in the
>>>>> Google Groups "elasticsearch" group.
>>>>> To unsubscribe from this topic, visit https://groups.google.com/d/
>>>>> topic/elasticsearch/06nbxJnYfDo/unsubscribe.
>>>>> To unsubscribe from this group and all its topics, send an email to
>>>>> [email protected].
>>>>> To view this discussion on the web visit https://groups.google.com/d/
>>>>> msgid/elasticsearch/6fa70b40-0fb7-4735-851d-bf8bc872fd38%
>>>>> 40googlegroups.com<https://groups.google.com/d/msgid/elasticsearch/6fa70b40-0fb7-4735-851d-bf8bc872fd38%40googlegroups.com?utm_medium=email&utm_source=footer>
>>>>> .
>>>>>
>>>>> For more options, visit https://groups.google.com/d/optout.
>>>>>
>>>>
>>>> --
>>> You received this message because you are subscribed to a topic in the
>>> Google Groups "elasticsearch" group.
>>> To unsubscribe from this topic, visit
>>> https://groups.google.com/d/topic/elasticsearch/06nbxJnYfDo/unsubscribe.
>>> To unsubscribe from this group and all its topics, send an email to
>>> [email protected].
>>> To view this discussion on the web visit
>>> https://groups.google.com/d/msgid/elasticsearch/3e73ca3a-9f27-417a-b097-846dfa4730d0%40googlegroups.com<https://groups.google.com/d/msgid/elasticsearch/3e73ca3a-9f27-417a-b097-846dfa4730d0%40googlegroups.com?utm_medium=email&utm_source=footer>
>>> .
>>>
>>> For more options, visit https://groups.google.com/d/optout.
>>>
>>
>>
--
You received this message because you are subscribed to the Google Groups
"elasticsearch" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/elasticsearch/413bdb0f-dfc7-49d6-bfaf-3156d11a8e91%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.