エラスティック検索で単純なネストされたデータにインデックスを付けてクエリを実行しようとしていますが、次のエラーが発生します。
"filter":[]}}}]]]; nested: QueryParsingException[[products] [_na] query malformed, no field after start_object]; }]
私のマッピングは次のとおりです。
{
"product": {
"properties": {
"id": { "type": "integer", "store": true },
"description": { "type": "string" },
"kind": { "type": "string" },
"name": { "type": "string", "store": true },
"tags": {
"type": "nested",
"properties": {
"label": {
"type": "string",
"index": "not_analyzed",
"omit_norms": true,
"index_options": "docs"
},
"slug": {
"type": "string",
"index": "not_analyzed",
"omit_norms": true,
"index_options": "docs"
}
}
}
}
}
}
以下のクエリですべてのヘッドフォンを正常に取得しています。
{
"query": {
"filtered": {
"query": {
"bool": {
"must": {
"match": { "kind": "Headphone" }
},
"must_not": [],
"should": []
}
},
"filter": []
}
}
}
私の質問は、ファセットをサポートしているときに「XXタグ付きのヘッドフォン」または「XXおよびYYタグ付きのヘッドフォン(別のクエリ)」を見つけるための適切なクエリ構造は何ですか?
以下のクエリ部分を上記のクエリとマージしようとしましたが、それを配置する「正しい」場所(キー)を見つけることができません:
{
"nested": {
"path": "tags",
"filter": {
"bool": {
"must": {
"terms": {
"tags.slug": [ "discount", "black"],
"minimum_should_match": 1
}
}
}
}
}
}