我正在使用 7.10。彈性搜索的版本。我創建了一個索引并做了設定映射。然后我使用 http 請求將查詢發送到索引。我得到了我需要的結果,但我想用 Java API 做同樣的事情。然而,我做不到。你能幫我發送請求并從頭開??始以 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 Java API 撰寫此查詢。你能幫我弄清楚嗎?
uj5u.com熱心網友回復:
這將是構建請求的方式:
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?
uj5u.com熱心網友回復:
最后我找到了我自己的答案。由于缺乏有關此類特定主題的檔案,因此很難找到解決方案。我正在為那些想知道的人分享我的解決方案:
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);
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/391512.html
標籤:弹性搜索 弹簧数据弹性搜索 弹性搜索-java-api
