隨着短的例子 - 具有以下對sample
索引和test
類型映射:
"test": {
"properties": {
"description": {"type": "keyword"}
}
}
和文檔索引:
{ "description": "blue sky"}
我想有一個查詢:
{
"query" : {
"match": {
"description": "blue sky"
}
},
"suggest" : {
"my-suggest-1" : {
"text" : "blue sk",
"term" : {
"field" : "description"
}
}
}
}
在Java API中,您需要添加bool查詢和sug GESTION到SearchRequestBuilder
:
BoolQueryBuilder boolQuery = QueryBuilders.boolQuery()
.must(QueryBuilders.matchQuery ("description", "blue sky"));
SuggestionBuilder suggestionBuilder =
new TermSuggestionBuilder("description").text("blue sk");
SuggestBuilder suggestion =
new SuggestBuilder().addSuggestion("my-suggest-1", suggestionBuilder);
SearchRequestBuilder builder = client.prepareSearch("sample")
.setTypes("test")
.setQuery(boolQuery)
.suggest(suggestion);
SearchResponse searchResponse;
try {
searchResponse = builder.execute().get();
for (SearchHit hit : searchResponse.getHits().getHits()) {
LOG.info("Result: " + hit.getSourceAsString());
}
} catch (InterruptedException | ExecutionException e) {
LOG.error("Exception while executing query {}", e);
}
當您調試searchResponse對象,它看起來像這樣:
{
"took":2,
...,
"hits":{
"total":1,
"max_score":0.2876821,
"hits":[
{
"_index":"sample",
"_type":"test",
"_id":"AV1b42zWa7i_qjvIODcL",
"_score":0.2876821,
"_source":{
"description":"blue sky"
}
}
]
},
"suggest":{
"my-suggest-1":[
{
"text":"blue sk",
"offset":0,
"length":7,
"options":[
{
"text":"blue sky",
"score":0.85714287,
"freq":1
}
]
}
]
}
}
使用'ElasticsearchTemplate.suggest()'和傳遞一個'SuggestBuilder'您可以創建一個提示查詢。 – Val
@Val如果我需要與我的問題示例中描述的查詢相結合的提示,該怎麼辦?我需要結合同一級別的建議進行查詢。 – whitenexx