如果有人可以发布如何执行此操作的示例,它几乎可以回答我关于 Elasticsearch 中过滤如何工作的所有问题。
假设 A、B、C、D、E 等是字段,并且 a1、a2、...、b1、b2、...等是这些字段的可能值。还假设这些字段中的任何一个都可以有多个值。
我将如何使用以下逻辑执行过滤:
A=a1 AND (B=b1 OR C=c1) AND ((D=d1) OR (D=d2)) AND (((E=e1) OR (E=e2)) AND (F=f1)) OR (((G=g1) AND (G=g2)) AND (H=h1))
这不是我要编写的实际查询,但是它包含我想编写的所有查询。
我知道如何做 A=a1 和(B=b1 或 B=b2)。例如,下面我在 CustomerID=113 AND (TypeID=91 OR TypeID=70) 的文档中搜索术语“要搜索的内容”。
{
"query": {
"filtered": {
"query": {
"query_string": {
"query": "something to search"
}
},
"filter": {
"and": [
{
"term": {
"CustomerID": "113"
}
},
{
"or": [
{
"terms": {
"TypeID": [
91,
70
]
}
}
]
}
]
}
}
}
}
然而,我正在努力弄清楚如何组合这些过滤器的其余部分。
一个完整的例子会很棒!