Elasticsearch Обязателен к объекту списка

Я использую Elastic 6.0. Мой запрос kibana выглядит следующим образом:

  "bool": {
       "must": [
          {
           "match": {
             "relationships.relation": {
               "query": "spouse"
            }
      }
    },
    {
      "match": {
        "relationships.first_name": {
          "query": "james"
        }
      }
    },
    {
      "match": {
        "relationships.last_name": {
          "query": "smith"
        }
      }
    }
  ]
}

который дает мне результаты как

    1.    "relationships": [
        {
          "first_name": "John",
          "last_name": "Heafner",
          "relation": "Father"
        },
        {
          "first_name": "Mary",
          "last_name": "Dellinger",
          "relation": "Mother"
        },
        {
          "first_name": "James S.",
          "last_name": "Smith",
          "relation": "Spouse"
        }
      ]

    2. "relationships": [
        {
          "first_name": "James",
          "last_name": "Hickey",
          "relation": "Father"
        },
        {
          "first_name": "Mary",
          "last_name": "Raftery",
          "relation": "Mother"
        },
        {
          "first_name": "Richard",
          "last_name": "Smith",
          "relation": "Spouse"
        }
      ]

Мне нужен только 1-й результат, так как он содержит точное совпадение на основе моего запроса
{ "first_name": "James S.", "last_name": "Smith", "relation": "Spouse" } Я попробовал запрос термина, но это дает те же результаты, что и выше. Любое предложение будет очень полезно.


person Sushil    schedule 30.05.2018    source источник


Ответы (1)


Похоже, вы relationships сопоставили тип object. Чтобы это работало так, как вы ожидаете, relationships необходимо сопоставить как nested тип, и вы должны использовать nested запросов к полям запроса вложенных объектов.

person Russ Cam    schedule 30.05.2018
comment
Есть ли другой вариант, как указано выше, решение означает, что мне нужно изменить существующее сопоставление - person Sushil; 30.05.2018
comment
Боюсь, другого варианта нет. Самый простой способ исправить это — использовать Reindex API для переиндексации документов в новый индекс, в котором настроено сопоставление nested для relationships. - person Russ Cam; 30.05.2018