小编ahm*_*yha的帖子

Elasticsearch QueryBuilder匹配多个术语

以下列格式给出ES索引中的JSON:

{
    "pin": {
        "id": 123,
        "location": {
            "lat": 456,
            "lon":-789
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

以下内容使文档与id字段匹配:

client.prepareSearch("index_name")
        .setTypes("pin")
        .setQuery(QueryBuilders.termQuery("id", 123))
        .execute()
        .actionGet();
Run Code Online (Sandbox Code Playgroud)

相反,我正在尝试匹配多个字段,即.(location.lat,location.lon).

QueryBuilders.termQuery(); // accepts only a single term
Run Code Online (Sandbox Code Playgroud)

尝试了一些替代品,但似乎没有任何替代方案,例如:

QueryBuilder queryBuilder = QueryBuilders.boolQuery()
        .must(QueryBuilders.termQuery("location.lat", 456))
        .must(QueryBuilders.termQuery("location.lon", -789));

client.prepareSearch("index_name")
        .setTypes("pin")
        .setQuery(queryBuilder)
        .execute()
        .actionGet();
Run Code Online (Sandbox Code Playgroud)

java elasticsearch

8
推荐指数
1
解决办法
2万
查看次数

标签 统计

elasticsearch ×1

java ×1