Elasticsearch, как запросить свойство типа документа, которое должно содержать какое-то вложенное свойство

Привет, я хотел бы получить документы от ES6, которые содержат свойство типа объекта с некоторым искомым свойством. Структура документа выглядит так:

{
   "ico": 46594523,
   "contacts": {
          "phones": null,
          "emails": [
                 "[email protected]"
          ]
   },
   "name": "aaaaaaaaa"
   }
},

и я хотел бы выполнить поиск во всех документах, в которых есть поле contacts.emails. Этот запрос работает с ES2, но не работает с ES6. Что с этим не так?

{
    "query": 
    {
        "exists": {"field": "contacts.emails"}
    }
} 

Мне нужно выполнить поиск в свойствах объекта контактов https://www.elastic.co/guide/en/elasticsearch/reference/current/object.html.


person Čamo    schedule 17.10.2018    source источник
comment
Действительно ли это свойство nested в отображении?   -  person Tim    schedule 17.10.2018
comment
Нет, это не вложенный тип.   -  person Čamo    schedule 17.10.2018
comment
Ваш запрос выглядит правильным. Как выглядит ваше отображение и ваш полный запрос?   -  person Tim    schedule 17.10.2018
comment
Это отображение свойства контактов: "contacts": { "properties": { "emails": { "index": false, "type": "text" }, "domains": { "index": false, "type": "text" }, "phones": { "index": false, "type": "text" } } }, запрос может быть таким же простым, как я писал выше, но не работает.   -  person Čamo    schedule 17.10.2018
comment
Может быть проблема в сопоставлении index: false?   -  person Čamo    schedule 17.10.2018


Ответы (1)


Проблема заключается в сопоставлении, в котором указано, что контакты.email не индексируются.

person Čamo    schedule 17.10.2018
comment
Да, если ваше отображение устанавливает "index": "false", то оно не будет помещено в инвертированный индекс. Так что для Elasticsearch его не существует. - person Tim; 17.10.2018