私は、文書の構造を以下している:記事:ElasticSearch:ネストされた文書による複雑なフィルタ
{
product_name: "Product1",
product_id: 1,
...,
articles: [
{
article_name: 'Article 101',
id: 101,
some_param: 10,
clients: []
},
{
article_name: 'Article 102',
id: 102,
some_param: 11,
clients: [
{
client_id: 10001,
client_name: "some client 1001"
}
...
]
}
]
},
{
product_name: "Product2",
product_id: 2,
...,
articles: [
{
article_name: 'Article 101',
id: 101,
some_param: 10,
clients: []
},
{
article_name: 'Article 102',
id: 102,
some_param: 10,
clients: [
{
client_id: 10001,
client_name: "some client 1001"
}
...
]
}
]
}
私はその記事の一部は2つの条件を(単一記事は両方の条件と一致する必要があります)と一致する場合にのみ文書(製品)を取得する必要があります.some_param = 10001
= 10とarticles.clients.client_idだから私は、私が間違っていた、今、このクエリを使用しています(と私は理由を知っている)ID 2.
で唯一の製品を取得する必要があり、なぜなら両方のドキュメントを取得します:
articles.some_param = 10 AND articles.clients.client_id = 10001例えば、:私は両方の条件に合致する少なくとも1件の記事を持ってのみ製品を取得するクエリを作成するにはどうすればよい
{ "query": { "bool": { "filter": [ { "term": { "articles.clients.id": 10001 } }, { "terms": { "articles.some_param": 10 } } ] } } }
ID 2の製品のみを入手するには?このような
あなたが望むように機能するには、ネストされたタイプが必要です。 https://www.elastic.co/guide/en/elasticsearch/reference/current/nested.html – khachik
これらはすでにネストされたタイプとして設定されています。この問題はネストされた型には関係しないと私は考えている。上記のクエリは必要に応じて動作しますが、要件に合わない場合があります。 "articles.some_param = 10 AND articles.clients.client_id = 10001") – Teimuraz