Нет проблем при ссылке на вложенное поле ("mappings.Primary Hierarchy"
в вашем случае) в запросе термина
{
"query":{
"bool":{
"must":[
{
"query_string":{
"query":"Nokia",
"default_operator":"AND"
}
},
{
"term":{
"mappings.Primary Hierarchy":"nokia"
}
}
]
}
},
"size":10,
"from":0
}
, это просто успешно отфильтровывает по Nokia .Если вы хотите использовать именно Nokia (не анализируемый термин), вы должны использовать поле "mappings.Primary Hierarchy.keyword"
. Ключевое слово здесь означает, что содержимое этого поля точно такое же, как оно было передано вами во время индексации.
2-я вещь также возможна, но потребует правильных отображений.Вы должны указать, что ваши отображения имеют вложенный тип (что означает, что в нем могут быть другие поля).
Простой пример в вашем случае может выглядеть примерно так:
{
"mappings": {
"_doc" : {
"properties" : {
"mappings" : {
"type" : "nested"
}
}
}
}
}
Вам необходимо создать свой индекс с примененными этими настройками.
В этом случае ваш запрос может выглядеть следующим образом:
{
"query": {
"nested": {
"path": "mappings",
"query": {
"multi_match": {
"query": "Nokia"
}
}
}
}
}
Запрос на несколько совпадений если поля не указаны, по умолчанию используются все поля в отображения объекты