elasticsearch - ElasticSearch 在过滤器中组合了 OR 和 AND 子句
问题描述
我有一个带有多个过滤器的 ElasticSearch 7.7 查询(我不想计入分数的标准),看起来像这样:
{
"from": 0,
"size": 100,
"query": {
"bool": {
"must": {
"match_all": {}
},
"filter": [
{
"term": {
"type": 4
}
},
{
"term": {
"gender": "female"
}
}
]
}
}
}
我想在两个性别过滤器中添加一个 OR 子句,以便过滤所有带有type=4
AND ( gender=female
OR gender=unisex
) 的文档。这可能吗?
解决方案
您可以使用should
子句
{
"from": 0,
"size": 100,
"query": {
"bool": {
"must": {
"match_all": {}
},
"filter": [
{
"term": {
"type": 4
}
},
{
"bool": {
"should": [
{
"term": {
"gender": "female"
}
},
{
"term": {
"gender": "unisex"
}
}
]
}
}
]
}
}
}
推荐阅读
- postgresql - 大表的 JDBC 选择性能不佳
- c++ - 清空对象的最佳方法是什么?
- javascript - 这个主要测试功能是如何工作的?
- sql-server - 跨服务器查找大表的最快方法?
- excel - 使用 MS Access VBA 打开 Excel 文件并将数据从一张表移动到另一张表
- c# - 如何将 2 个或多个 .NET Core 3.1 API Web API 托管为单个 Windows 服务?
- c# - How to remove this straight line in ASP.NET MVC?
- javascript - 自定义挂起模式(仅限开发人员) discordjs
- r - 从变量组合创建数据框
- c++ - 学生学习 在 Visual Studio 2019 命令行中创建 GUI 窗口