[英]ElasticSearch Java API - Query Builder
我目前正在研究 elasticsearch ,在那里我創建了一個查詢:
"query": {
"bool": {
"must": [
{"match": {
"companyId": 35
}},
{
"multi_match": {
"query": "movie",
"fields": ["name", "description"]
}
}
]
}
}
}
為此,我在 JAVA 中構建了 QueryBuilder:
SearchRequest searchRequest = new SearchRequest("faqs");//index name
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
QueryBuilder mulMatch = QueryBuilders.multiMatchQuery(name,"name", "description").type("phrase").boost(5);
QueryBuilder cId = QueryBuilders.matchQuery("companyId", companyId).boost(5);
QueryBuilder must = QueryBuilders.boolQuery().must(cId).must(mulMatch).boost(5);
searchSourceBuilder.query(must);
searchRequest.source(searchSourceBuilder);
System.out.println("SS Query : " + searchSourceBuilder);
return searchSourceBuilder;
這給了我創建的查詢:
{"query":{"bool":{"must":[{"match":{"companyId":{"query":35,"operator":"OR","prefix_length":0,"max_expansions":50,"fuzzy_transpositions":true,"lenient":false,"zero_terms_query":"NONE","auto_generate_synonyms_phrase_query":true,"boost":5.0}}},{"multi_match":{"query":"movie","fields":["description^1.0","name^1.0"],"type":"phrase","operator":"OR","slop":0,"prefix_length":0,"max_expansions":50,"zero_terms_query":"NONE","auto_generate_synonyms_phrase_query":true,"fuzzy_transpositions":true,"boost":5.0}}],"adjust_pure_negative":true,"boost":5.0}}}
但是,我需要 output 例如:
{
"Id": 1,
"name": "Controle",
"description": "Welcome movie",
"visibility": "2",
"isarticleEnabled": false,
"companyId": 35,
"categoryId": 0
}
雖然我得到 output 作為(API 響應):
{
"suggestOnly": false,
"fragment": false
}
那么要得到這樣的回應,我究竟應該怎么做呢? 我得到的一種解決方案是使用搜索響應,例如:
SearchResponse res = client.search(searchRequest, RequestOptions.DEFAULT);
但是,這實際上並不適用於 ElasticsearchRestTemplate 和 RestHighLevelClient。
注意:我已經搜索了所有相關的解決方案,即搜索請求、搜索響應,但我無法獲得任何合適的解決方案。
也許它們應該被合並而不是覆蓋。 searchSourceBuilder.query(QueryBuilders.boolQuery().filter(mulMatch).filter(cId).filter(must));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.