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]<javascript:>
> > 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().g
>>>>>>> etSuggestion("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-cef5-4f13-8dce-04e0bcfc5404%40goo
>>>>>> glegroups.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] <javascript:>.
>> 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/8f1497f0-ad82-42d5-9688-f86fd295901e%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.