我想知道硬線查詢和通過 API 生成的查詢之間的區別?我正在使用彈性搜索 API 來構建查詢。我期望的結果查詢具有以下格式。
{
"query": {
"bool": {
"must": [
{"match": {
"model": "IBC"
}
},{"match": {
"company.name": "Samsung"
}
}
]
}
}
}
但是我使用 ElasticSearch 查詢構建器 API 獲得的輸出格式如下。我觀察到,對于小型資料集,這兩個查詢獲得的結果完全相同。我不確定它對大型資料集的表現如何。
{
"size": 100,
"query": {
"bool": {
"must": [
{
"match": {
"company.name": {
"query": "Samsung",
"operator": "OR",
"prefix_length": 0,
"max_expansions": 50,
"fuzzy_transpositions": true,
"lenient": false,
"zero_terms_query": "NONE",
"auto_generate_synonyms_phrase_query": true,
"boost": 1.0
}
}
},
{
"match": {
"model": {
"query": "IBC",
"operator": "OR",
"prefix_length": 0,
"max_expansions": 50,
"fuzzy_transpositions": true,
"lenient": false,
"zero_terms_query": "NONE",
"auto_generate_synonyms_phrase_query": true,
"boost": 1.0
}
}
}
],
"adjust_pure_negative": true,
"boost": 1.0
}
}
}
我為生成查詢而撰寫的代碼:
Map<String,String> parametersMap = new HashMap<String,String>();
parametersMap.put("model","IBC");
parametersMap.put("company.name","Samsung");
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
for(String key: parametersMap){
MatchQueryBuilder matchQueryBuilder = QueryBuilders.matchQuery(key,parametersMap.get(key);
boolQueryBuilder = boolQueryBuilder.must(matchQueryBuilder);
}
searchSourceBuilder.size(100).query(boolQueryBuilder);
String result = searchSourceBuilder.toString();
uj5u.com熱心網友回復:
elasticsearch spring-data 庫生成的查詢使用 spring-data-elasticsearch 的當前檔案中記錄的默認值,它實際上取決于您正在運行的 elasticsearch 版本。如果您真的想使用您創建的純查詢,您可以查看此處Query的注釋
以下是一些關于在生成的查詢中添加的額外屬性的有用檔案:
- 函式和運算子
- 模糊查詢
- 匹配查詢
- 術語查詢
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/416983.html
標籤:
