Query with completion assistants in Elasticsearch with Java API

I have created my indexes, and the mapping type for the suggest field is set to complete. I can't figure out how to set up a query for termination suggestions in elastic search (Java API)

I am trying to use this query to execute my implementation.

"song-suggest" : {
    "text" : "n",
    "completion" : {
        "field" : "suggest"
    }
}

That's what I still have

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, is something wrong? Thank!

+4
source share
2 answers

Not sure if this is the best thing to do. But it works for me. Hope this helps.

@Override
public List<SuggestionResponse> findSuggestionsFor(String suggestRequest) {
    CompletionSuggestionBuilder suggestionsBuilder = new CompletionSuggestionBuilder("completeMe");
    suggestionsBuilder.text(suggestRequest);
    suggestionsBuilder.field("suggest");
    SuggestRequestBuilder suggestRequestBuilder =
            client.prepareSuggest(MUSIC_INDEX).addSuggestion(suggestionsBuilder);

    logger.debug(suggestRequestBuilder.toString());

    SuggestResponse suggestResponse = suggestRequestBuilder.execute().actionGet();

    Iterator<? extends Suggest.Suggestion.Entry.Option> iterator =
            suggestResponse.getSuggest().getSuggestion("completeMe").iterator().next().getOptions().iterator();

    List<SuggestionResponse> items = new ArrayList<>();
    while (iterator.hasNext()) {
        Suggest.Suggestion.Entry.Option next = iterator.next();
        items.add(new SuggestionResponse(next.getText().string()));
    }
    return items;
}
+2
source

: " " ". : code.field(" ").startObject().field(" type "," complete ").field(" index_analyzer "," simple ").field(" search_analyzer "," simple").endObject()

, . ?

, , . :

XContentFactory.jsonBuilder().startObject()
  .startObject("properties")
    .startObject("suggest")
      .field("type", "completion")
    .endObject()
  .endObject()
.endObject()

Btw, SimpleAnalyzer - . , .

+1

Source: https://habr.com/ru/post/1535025/


All Articles