Elasticsearch должен в списке объектов - PullRequest
0 голосов
/ 30 мая 2018

Я использую Elastic 6.0. Мой запрос кибаны, как показано ниже

  "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", "Relations": "Spouse"} Я пробовал запрос термина, но он дает те же результаты, что и выше.Любое предложение очень поможет.

1 Ответ

0 голосов
/ 30 мая 2018

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

...