簡體   English   中英

如何使用 BoolQueryBuilder 從 elasticsearch 查詢數據?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM