以下查询在kibana上正常工作。我想为ReastHighLevel Client编写相同的内容。
POST taxon/_search?pretty
{
"suggest": {
"name-suggest" : {
"prefix" : "man",
"completion" : {
"field" : "name"
}
}
}
}
我需要使用RestHighLevelClient编写上述查询。 我提出的那个没有帮助
SearchRequest searchRequest = new SearchRequest("taxon");
searchRequest.types("taxon");
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
SuggestionBuilder termSuggestionBuilder =SuggestBuilders.completionSuggestion("name").text(data);
SuggestBuilder suggestBuilder = new SuggestBuilder();
suggestBuilder.addSuggestion("name-suggest", termSuggestionBuilder);
searchSourceBuilder.suggest(suggestBuilder);
searchRequest.source(searchSourceBuilder);
SearchResponse searchResponse=null;
try {
searchResponse = client.search(searchRequest);
client.close();
} catch (IOException e) {
// TODO Auto-generated catch block
System.out.println("excetion is here");
e.printStackTrace();
}
System.out.println(searchResponse);
上面的查询给出了正确的结果,但是如何从中获取_source条目。 任何帮助将不胜感激。
答案 0 :(得分:0)
我能够在java
中获取完成建议器的所有建议响应,如下所示/* Create a Consumer to process each of the suggestion */
Consumer<Suggestion<? extends org.elasticsearch.search.suggest.Suggest.Suggestion.Entry<? extends Option>>> suggestionConsumer = suggestion -> {
for(org.elasticsearch.search.suggest.Suggest.Suggestion.Entry<? extends Option> entry: suggestion.getEntries()){
for(Option option: entry.getOptions()){
//PRINT EACH SUGGESTION TEXT VALUE
System.out.println(option.getText());
}
}
};
/* Fetch search results */
searchResponse = client.search(searchRequest);
/* Fetch search response suggestions */
Suggest suggestions=searchResponse.getSuggest();
/* Handle each of the suggestions with foreach */
suggestions.forEach(suggestionConsumer);
Please note that JAVA imports I have used are
Suggestion: org.elasticsearch.search.suggest.Suggest.Suggestion
Entry: org.elasticsearch.search.suggest.Suggest.Suggestion.Entry
Option: org.elasticsearch.search.suggest.Suggest.Suggestion.Entry.Option;
答案 1 :(得分:0)
我认为来源来自建议字段中的选项。所以我在您的代码之后使用了此代码。它在建议字段中提供了所有可能的值。
/// *与上一行相同
SearchResponse searchResponse=null;
try {
searchResponse = client.search(searchRequest);
client.close();
} catch (IOException e) {
// TODO Auto-generated catch block
System.out.println("exception is here");
e.printStackTrace();
}
System.out.println(searchResponse);
Suggest suggest = searchResponse.getSuggest();
System.out.println("suggest variable has: "+suggest);
List<String> returnList =new ArrayList<>();
CompletionSuggestion termSuggestion = suggest.getSuggestion("name-suggest");
List<CompletionSuggestion.Entry.Option> termSuggestion1 = termSuggestion.getOptions();
System.out.println("term suggestion value is: "+termSuggestion1);
for (CompletionSuggestion.Entry.Option entry : termSuggestion1) {
System.out.println("termsuggestion.entry value: "+entry.getText());
String suggestText = entry.getText().toString();
System.out.println("suggest text value: "+suggestText);
returnList.add(suggestText);
System.out.println("output of return: "+returnList);
}