簡體   English   中英

ElasticSearch Java API - 查詢生成器

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

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