有没有办法动态构建elasticsearch bool查询。在我的应用程序中,用户可以一次使用多个过滤器。就像,他可以在一个请求中使用2个过滤器,为另一个请求使用3个过滤器。我将这些过滤器详细信息存储在hashmap中。所以根据用户请求,查询应该通过添加过滤器来改变。
BoolQueryBuilder query = QueryBuilders.boolQuery()
.must(QueryBuilders.matchQuery("client_code",
"SSSS"));
答案 0 :(得分:4)
您可以遍历您的hashmap键/值,并相应地为您找到的每个键/值对构建bool查询:
BoolQueryBuilder query = QueryBuilders.boolQuery();
for (String key : hashmap.keySet()) {
query.must(QueryBuilders.matchQuery(key, hashmap.get(key)));
}