java - 具有多个匹配字符串的 Jest 弹性搜索查询生成器查询
问题描述
我正在尝试使用 Jest 在 Java 中查询弹性搜索。我正在使用查询生成器来构造查询。
QueryBuilder matchQuery = QueryBuilders.boolQuery()
.must(QueryBuilders.matchQuery("id", "3434"))
.must(QueryBuilders.matchQuery("name", "name"))
.must(QueryBuilders.matchQuery("action", "login"))
.must(rangeQuery);
//i have this map now
Map<String , String> parameters = new HashMap<>();
parameters.put("id", "3433");
parameters.put("name", "name");
parameters.put("action", "login");
如果有人能告诉我这是否可以动态构建,就像 matchQueries 一样,那就太好了。例如,我会有三个匹配查询,但我会有更多。我可以将匹配查询属性放在地图中。但是,如果我重复这一点,我们将如何定义这个 boolQuery ?有人对此有任何想法吗?
寻找这样的东西
QueryBuilder matchQuery = QueryBuilders.boolQuery()
.must(QueryBuilders.matchQuery(map.key, map.value))
.must(rangeQuery);
但我将如何动态地构建它?
解决方案
您可以简单地遍历您的地图并将每个条件添加到查询中,如下所示:
BoolQueryBuilder boolQuery = QueryBuilders.boolQuery();
for(String key : parameters.keySet()){
boolQuery.must(QueryBuilders.matchQuery(key, parameters.get(key)));
}
boolQuery.must(rangeQuery);
推荐阅读
- r - 如何在 R 程序中读取 bgz 文件,或将其转换为 R 可以读取的内容?
- apache - 如何覆盖 SAML 的 SP 元数据 Auth_mod_mellon apache 模块
- python - 无法在 Python 中使用外部函数更改类变量
- php - 使用 Laravel 测试 JSON 响应
- python - 寻找一种更有效的方法来从数据框列中的字典创建新列
- google-container-os - 如何向 COS 的开发者提供反馈?
- python - 在 Web 浏览器中显示 Linux 命令的输出 - Python
- firebase - 在内部托管 Firebase 实时数据库
- jenkins - Jenkins xcode 插件错误地报告没有配置开发人员配置文件
- ajax - Datatables Ajax 无法渲染 Vue 组件