![](/img/trans.png)
[英]Is there any way how can I create Elasticsearch Search Template from BoolQueryBuilder directly?
[英]How can I query data with BoolQueryBuilder from elasticsearch?
我需要在某些條件下從 aws elasticsearch 查詢一些數據。
我使用 BoolQueryBuilder
參數是關於pretty=true
這是我的代碼:
SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
BoolQueryBuilder boolQueryBuilder = new BoolQueryBuilder();
QueryBuilder qb1 = QueryBuilders.matchQuery("personId", personId);
boolQueryBuilder.must(qb1);
sourceBuilder.query(boolQueryBuilder);
result = searchUtil.getResult(params, sourceBuilder);
以下是錯誤信息
{
"error" : {
"root_cause" : [
{
"type" : "parsing_exception",
"reason" : "Unknown key for a START_OBJECT in [queryBuilder].",
"line" : 1,
"col" : 17
}
],
"type" : "parsing_exception",
"reason" : "Unknown key for a START_OBJECT in [queryBuilder].",
"line" : 1,
"col" : 17
},
"status" : 400
}
有人可以幫忙嗎?! 請!
不確定result = searchUtil.getResult(params, sourceBuilder);
在你的代碼中。
您可以閱讀此官方 ES 文檔以使用您正在使用的查詢構建器構建查詢,也可以參考此官方 ES 示例來構建您的查詢。
這很簡單,我猜您的錯誤原因是(因為沒有完整的信息)您正在使用其他一些實用程序來獲取無法處理您的 JSON 的結果。
編輯:使用 Elasticsearch 的 java 高級 rest-client 版本 7.4 添加了在本地為我工作的代碼。
SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
BoolQueryBuilder boolQueryBuilder = new BoolQueryBuilder();
QueryBuilder qb1 = QueryBuilders.matchQuery("personId", "kimchy");
boolQueryBuilder.must(qb1);
sourceBuilder.query(boolQueryBuilder);
//String searchJson = sourceBuilder.toString(); // if you want to print search json for debugging
SearchRequest searchRequest = new SearchRequest(indexName);// your index name
searchRequest.source(sourceBuilder);
SearchResponse searchResponse = client.search(searchRequest, RequestOptions.DEFAULT);
請注意最后三行代碼非常重要,您的代碼中缺少這些代碼,它們用於使用查詢創建搜索請求,並使用 ES 客戶端實際觸發此搜索請求並獲取結果。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.