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]<javascript:> > > 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/ >>>> CompletionSuggestSearchTests.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/ >>>> 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/f6e28fc8-cef5-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] <javascript:>. >> 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 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/3e73ca3a-9f27-417a-b097-846dfa4730d0%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.
