如果有人可以发布并举例说明如何做到这一点,它将回答几乎所有关于Elasticsearch过滤工作的问题。假设A,B,C,D,E等是字段,并且a1,a2,...,b1,b2等等是这些字段的可能值。还假定这些字段中的任何一个都可以有多个值。Elasticsearch复杂过滤器逻辑
A = A1和(B = B1或C = C1)和((d = D1)或(d = D2))AND(((E:
我将如何执行与下面的逻辑滤波=(e1)OR(E = e2))AND(F = f1))OR(((G = g1)AND(G = g2))AND(H = h1))
这不是一个实际的查询I我试图写,但它有我想写的所有查询。我知道如何去做A = a1和(B = b1或B = b2)。例如,下面我在CustomerID = 113 AND(TypeID = 91或TypeID = 70)的文档中搜索术语“要搜索的内容”。
{
"query": {
"filtered": {
"query": {
"query_string": {
"query": "something to search"
}
},
"filter": {
"and": [
{
"term": {
"CustomerID": "113"
}
},
{
"or": [
{
"terms": {
"TypeID": [
91,
70
]
}
}
]
}
]
}
}
}
}
但是,我正在努力弄清楚如何组合其余的这些过滤器。
一个完整的例子会很棒!
您确定要过滤吗?这个复杂的过滤器将被重复使用多次?你可以尝试生成一个query_string,就像你在搜索中显示并提交的那样,就像:'(搜索的东西)AND(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)) )' – 2013-05-03 16:36:40
过滤器会更好。其中一些搜索将反复使用,是的,而其他搜索将不太常用。我主要试图了解过滤器如何以不同的方式组合,并且没有看到任何清楚说明总体结构如何工作的例子。我见过AND过滤器,OR过滤器和BOOL过滤器/查询的例子,但这些例子都不够复杂,不足以说明这些东西如何一起玩。 – CTC 2013-05-03 17:21:39