es嵌套和普通條件一起進行查詢


TransportClient client = EsTransportClient.getInstance();
        SearchRequestBuilder searchRequestBuilder = client.prepareSearch("");
        searchRequestBuilder.setIndices("megacorp");
        searchRequestBuilder.setTypes("employee");
        BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
        QueryBuilder termQueryBuilder1 = QueryBuilders.termQuery("last_name", "smith");
        //嵌套類型查詢
        QueryBuilder tags = QueryBuilders.nestedQuery("tags", QueryBuilders.termQuery("tags.userid", "1a"), ScoreMode.Total);
        boolQueryBuilder.must(tags);
        boolQueryBuilder.must(termQueryBuilder1);
        searchRequestBuilder.setQuery(boolQueryBuilder);
        SearchResponse searchResponse = searchRequestBuilder.execute().actionGet();

 經過查詢后發現boolQueryBuilder結構是這樣的,符合預期可以查詢成功

{
  "bool" : {
    "must" : [
      {
        "nested" : {
          "query" : {
            "term" : {
              "tags.userid" : {
                "value" : "1a",
                "boost" : 1.0
              }
            }
          },
          "path" : "tags",
          "ignore_unmapped" : false,
          "score_mode" : "sum",
          "boost" : 1.0
        }
      },
      {
        "term" : {
          "last_name" : {
            "value" : "smith",
            "boost" : 1.0
          }
        }
      }
    ],
    "adjust_pure_negative" : true,
    "boost" : 1.0
  }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM