我们可以在弹性搜索过滤器中使用多个术语条件吗
Can we use multiple terms condition in elasticsearch filters
是否可以对 bool 过滤器中的特定字段使用多个术语条件?
query": {
"filtered": {
"filter": {
"bool": {
"must": [
{
"terms": {
"events": [
"abc",
"def",
"ghi",
"jkl"
]
},
"terms" : {
"users" : [
"user_1",
"user_2",
"user_3"
]
}
}
]
}
}
}
}
第一个术语过滤器工作正常,但我无法使用第二个术语,如果我对上述查询有任何错误,请更正。
你快到了,你忘记了一个牙套。这是正确的查询:
{
"query": {
"filtered": {
"filter": {
"bool": {
"must": [
{
"terms": {
"events": [
"abc",
"def",
"ghi",
"jkl"
]
}
},
{
"terms": {
"users": [
"user_1",
"user_2",
"user_3"
]
}
}
]
}
}
}
}
}
这将评估两个条件:
- 您的活动必须是abc/def/ghi/jkl
之一
- 用户必须是 user_1/user_2/user_3
基本上每个术语 query/filter 都需要用自己的大括号括起来,并且它们需要是兄弟姐妹。
是否可以对 bool 过滤器中的特定字段使用多个术语条件?
query": {
"filtered": {
"filter": {
"bool": {
"must": [
{
"terms": {
"events": [
"abc",
"def",
"ghi",
"jkl"
]
},
"terms" : {
"users" : [
"user_1",
"user_2",
"user_3"
]
}
}
]
}
}
}
}
第一个术语过滤器工作正常,但我无法使用第二个术语,如果我对上述查询有任何错误,请更正。
你快到了,你忘记了一个牙套。这是正确的查询:
{
"query": {
"filtered": {
"filter": {
"bool": {
"must": [
{
"terms": {
"events": [
"abc",
"def",
"ghi",
"jkl"
]
}
},
{
"terms": {
"users": [
"user_1",
"user_2",
"user_3"
]
}
}
]
}
}
}
}
}
这将评估两个条件:
- 您的活动必须是abc/def/ghi/jkl 之一
- 用户必须是 user_1/user_2/user_3
基本上每个术语 query/filter 都需要用自己的大括号括起来,并且它们需要是兄弟姐妹。