簡體   English   中英

Elasticsearch Java頂級查詢

[英]Elasticsearch java top level query

我正在嘗試使用Java API在以下json上運行搜索

{
  "query": {
    "has_child": {
      "query" : {
        "filtered": {
          "query": { "match_all": {}},
          "filter" : {
            "and": {"filters":[
              {"term": {"term": "value"}}
            ]}
          }
        }
      },
      "child_type": "child"
    }
  }
}

這是我擁有的Java代碼,

        QueryBuilders.hasChildQuery("child", QueryBuilders
                           .filteredQuery(QueryBuilders.matchAllQuery(),
                                         FilterBuilders.andFilter(FilterBuilders.
                                          termFilter("term", "value"))));

但是這只會產生json

{"has_child":
    {"query":
        {"filtered":
            {"query":{"match_all":{}},
                "filter":{
                "and":
                    {"filters":[
                        {"term":{"term":"value"}}
                        ]
                    }
                }
            }
        },
        "child_type":"child"
    }
}

如您所見,我缺少頂層{ "query" : ... }但是我找不到如何使用用於Elasticsearch的Java api添加此頂層查詢的方法。

根據我對代碼內部的理解

client.prepareSearch("parent-child")
            .setSearchType(SearchType.QUERY_THEN_FETCH)
            .setQuery(query)
            .setFrom(0).setSize(60).setExplain(true)
            .execute()
            .actionGet();

它使用{"query" : ...}包裝查詢

我的問題是我在搜索錯誤的索引。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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