我在用7.10。elasticsearch版本。我创建了一个索引并进行了设置-映射。然后,我使用http请求将查询发送到索引。我得到了我需要的结果,但是我想用Java做同样的事情。但是,我做不到。你能帮我从零开始发送请求并在java中作为列表获取结果吗?
这里是我用来获取建议的查询:
{
"suggest": {
"text": "some title I want to search",
"phrase_suggester": {
"phrase": {
"field": "title.shingle",
"max_errors": 2,
"size": 5,
"confidence": 0.0,
"direct_generator": [{
"field": "title.shingle",
"max_edits": 2
}
]
}
}
}
}如何使用Elasticsearch编写此查询。你能帮我弄清楚吗?
发布于 2021-12-22 09:22:50
最后我找到了我自己的答案。由于缺乏关于这类具体主题的文件,很难找到解决办法。我要为那些想知道的人分享我的解决方案:
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
PhraseSuggestionBuilder builder = SuggestBuilders.phraseSuggestion("title.shingle")
.addCandidateGenerator(new DirectCandidateGeneratorBuilder("title.shingle")
.suggestMode("always"))
.text(query)
.maxErrors(2f)
.confidence(0f);
SuggestBuilder suggestBuilder = new SuggestBuilder().addSuggestion("suggestion", builder);
searchSourceBuilder.suggest(suggestBuilder);
SearchRequest searchRequest = new SearchRequest();
searchRequest.indices("index_name");
searchRequest.source(searchSourceBuilder);
SearchResponse searchResponse = client.search(searchRequest, RequestOptions.DEFAULT);发布于 2021-12-20 21:05:57
这将是构建请求的方式:
client.search(searchRequestBuilder -> searchRequestBuilder
.suggest(suggestBuilder -> suggestBuilder
.text("some title I want to search")
.suggesters("phrase_suggester", fieldSuggesterBuilder -> fieldSuggesterBuilder
.phrase(phraseBuilder -> phraseBuilder.field("title.shingle")
.maxErrors(2d)
.size(5)
.confidence(0.0)
.directGenerator(directGeneratorBuilder -> directGeneratorBuilder
.field("title.shingle")
.maxEdits(2))))),
YourEntity.class);顺便说一句,新客户在7.16,你写了7.14?
https://stackoverflow.com/questions/70422910
复制相似问题