【发布时间】:2019-01-28 22:31:39
【问题描述】:
我是弹性搜索的新手,并尝试按照文章 You Complete Me 将 completion suggester 集成到我的一个应用程序中
我已将示例 data 插入到带有映射的 ES 中,下面的 CURL 查询(windows)返回 result
curl -H "Content-Type: application/json" -X POST localhost:9200/hotels/_search?pretty -d^
"{^
\"suggest\": {^
\"hotel_suggest\" : {^
\"prefix\" : \"hot\", ^
\"completion\" : { ^
\"field\" : \"name_suggest\" ^
}^
}^
}^
}"
不幸的是,下面使用 Java API 的代码没有从数据库返回任何文档(只是为了测试目的打印结果)
public String suggestSearch() throws IOException {
SearchRequest searchRequest = new SearchRequest("hotels");
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
// searchSourceBuilder.query(QueryBuilders.matchAllQuery());
SuggestionBuilder termSuggestionBuilder =
SuggestBuilders.termSuggestion("name").text("hot");
SuggestBuilder suggestBuilder = new SuggestBuilder();
suggestBuilder.addSuggestion("name_suggest", termSuggestionBuilder);
searchSourceBuilder.suggest(suggestBuilder);
searchRequest.source(searchSourceBuilder);
SearchResponse searchResponse = client.search(searchRequest, RequestOptions.DEFAULT);
Suggest suggest = searchResponse.getSuggest();
TermSuggestion termSuggestion = suggest.getSuggestion("name_suggest");
for (TermSuggestion.Entry entry : termSuggestion.getEntries()) {
for (TermSuggestion.Entry.Option option : entry) {
String suggestText = option.getText().string();
System.out.println(suggestText);
}
}
return "SUCCESS";
}
这段代码有什么问题?
【问题讨论】:
-
有没有在elasticsearch cluter中查看日志,看看有没有异常?
-
@Dush 查询结果好像是空的,控制台中没有发现异常,也可以得到搜索查询的结果。我要检查任何特定的日志吗?
-
是的,如果您可以在请求正常访问集群时查看日志,这可能会对您有所帮助,您可以在 `.../elasticsearch-6.2.2/logs/cluster 中找到日志.log'。
-
@Dush 我已经按照你说的检查了日志,没有发现任何异常
-
根据es doc,如果你想使用
Completion Suggeste你必须改变你的代码SuggestBuilders.completionSuggestion( "name" ).prefix( "hot" );和CompletionSuggestion entries=suggest.getSuggestion( "name_suggest" );
标签: java elasticsearch