私はElasticSearchを初めて使用し、ネストされたマッピング/クエリの使用に問題があります.
次のデータ構造がインデックスに追加されています。
{
"_id": "3",
"_rev": "6-e9e1bc15b39e333bb4186de05ec1b167",
"skuCode": "test",
"name": "Dragon vol. 1",
"pages": [
{
"id": "1",
"tags": [
{
"name": "dragon"
},
{
"name": "japonese"
}
]
},
{
"id": "2",
"tags": [
{
"name": "tagforanotherpage"
}
]
}
]
}
このインデックス マッピングは次のように定義されます。
{
"metabook" : {
"metabook" : {
"properties" : {
"_rev" : {
"type" : "string"
},
"name" : {
"type" : "string"
},
"pages" : {
"type" : "nested",
"properties" : {
"tags" : {
"properties" : {
"name" : {
"type" : "string"
}
}
}
}
},
"skuCode" : {
"type" : "string"
}
}
}
}
}
私の目標は、特定のタグを含むすべてのページを検索し、フィルタリングされたページ リストを含む book オブジェクトを返すことです (指定されたタグに一致するページのみを ES に返してもらいたいです)。次のようなもの(2ページ目を無視):
{
"_id": "3",
"_rev": "6-e9e1bc15b39e333bb4186de05ec1b167",
"skuCode": "test",
"name": "Dragon vol. 1",
"pages": [
{
"id": "1",
"tags": [
{
"name": "dragon"
},
{
"name": "japonese"
}
]
}
]
}
私が実際に使用するクエリは次のとおりです。
{
"from": 0,
"size": 10,
"query" : {
"nested" : {
"path" : "pages",
"score_mode" : "avg",
"query" : {
"term" : { "tags.name" : "japonese" }
}
}
}
}
しかし、実際には空の結果が返されます。私は何を間違っていますか?本の代わりに「ページ」を直接インデックス化する必要があるかもしれません。何が欠けていますか?
前もって感謝します !