誰かがこれを行う方法の例を投稿できれば、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) のドキュメントで "something to search" という用語を検索します。
{
"query": {
"filtered": {
"query": {
"query_string": {
"query": "something to search"
}
},
"filter": {
"and": [
{
"term": {
"CustomerID": "113"
}
},
{
"or": [
{
"terms": {
"TypeID": [
91,
70
]
}
}
]
}
]
}
}
}
}
ただし、これらのフィルターの残りの部分を組み合わせる方法を理解するのに苦労しています。
完全な例は素晴らしいでしょう!