java - Elasticsearch Java-Play Framework - 在查询 BoolQueryBuilder 中写一个查询
问题描述
这是我的 ES 文档结构
admin_faq
- faq_id
- title
- is_active
案例 1 过滤器
使用逗号分隔FAQ id's 2,3,4.
拆分 ID
String[] array = assignedCategories.split(",");
for (String value : array) {
queryBuilderPost.should(QueryBuilders.termsQuery("faq_id", value));
}
在案例 1 中,此查询对我来说很好,并且只显示常见问题解答 ID 所在的位置2,3,4
案例 2 ,当我有另一个过滤器,比如 is_active,所以它返回 is_active=Y 的所有数据,并且还与逗号分隔的 id 的常见问题解答有关
String[] array = assignedCategories.split(",");
for (String value : array) {
queryBuilderPost.should(QueryBuilders.termsQuery("faq_id", value));
}
queryBuilderPost.must(QueryBuilders.termsQuery("is_active", isActive));
注意:我希望只从具有活动记录的逗号分隔 id 中获取数据。您可以说它OR
在 MySQL 中的工作方式类似。我们需要将其更改为我正在尝试但不为我工作的 AND 条件。
解决方案
你可以只替换must
为filter
.
或者,您只需要另一层bool
查询。
String[] array = assignedCategories.split(",");
for (String value : array) {
queryBuilderPost.should(QueryBuilders.termsQuery("faq_id", value));
}
QueryBuilder bool = QueryBuilders.boolQuery();
bool.must(queryBuilderPost);
bool.must(QueryBuilders.termsQuery("is_active", isActive));
然后bool
用作您的查询。
推荐阅读
- android - 如何在android上的mysql中进行更改
- r - 在 R 中更快地读取和转换 .pdf 文件并将其转换为 .txt 文件?
- javascript - Jquery选择多个div
- javascript - Javascript 语法错误,单选按钮上无法识别的表达式
- spring-boot - 当 bootstrap.properties 存在时 application.properties 在 spring config 客户端中被忽略
- vba - 如果用户跳过行输入数值,则强制用户在以下可用行中输入数据
- angular - 在离子中创建一个模态,但以我自己的方式呈现它
- c# - opus 和 NAudio 流不同步
- sql - 从具有最大日期的另一个表中选择数据
- python - 将列值(Days_Spent)添加到 Est_end 列中的日期时间天值