( ИЗМЕНЕНО ПОСЛЕ КОММЕНТАРИИ )
В качестве первого соображения сопоставление не соответствует структуре вашего документа, например, my_field_name
не имеет ни полей labels
, ни source
. Какой из них лучше представляет ваши данные?
В качестве второго соображения в своем комментарии вы сказали, что
во время запроса я не знаю "url_of_an_image", поскольку он отличается для каждого документа
Однако, из вашего примера, похоже, что url_of_an_image
является свойством элементов my_field_name
, а не документа. Поэтому я бы предложил сделать что-то вроде:
"my_field_name": [
{
"image_url": "url_of_an_image",
"tags": [
"tag1",
"tag2",
"tag3",
"tag4",
"tag5"
]
},
{
"image_url": "url_of_an_image2",
"tags": [
"tag4",
"tag5",
"tag6",
"tag7",
"tag8"
]
}
]
И это будет отображение:
"my_field_name": {
"type": "nested",
"properties": {
"image_url": {
"type": "text"
},
"tags": {
"type": "text"
}
}
}
Таким образом, вы можете запускать такие запросы, как:
{
"query": {
"nested" : {
"path" : "my_field_name",
"query" : {
"bool" : {
"must" : [
{ "match" : {"my_field_name.image_url" : "url_of_an_image2"} },
{ "match" : {"my_field_name.tags" : "tag3"} }
]
}
}
}
}
}