有什么方法可以动态构建elasticsearch bool查询。在我的应用程序中,用户可能一次使用多个过滤器。就像,他可能在一个请求中使用2个过滤器,而在另一个请求中使用3个过滤器。我将该过滤器详细信息存储在哈希图中。因此根据用户请求,查询应通过添加过滤器进行更改。

BoolQueryBuilder query = QueryBuilders.boolQuery()
                    .must(QueryBuilders.matchQuery("client_code",
                            "SSSS"));

最佳答案

您可以遍历哈希映射键/值,并为找到的每个键/值对相应地构建bool查询:

BoolQueryBuilder query = QueryBuilders.boolQuery();
for (String key : hashmap.keySet()) {
    query.must(QueryBuilders.matchQuery(key, hashmap.get(key)));
}

09-26 20:32