Написать запрос для массива объектов в Elastic Search - PullRequest
0 голосов
/ 03 мая 2019

Я пытаюсь написать запрос для ввода ниже (массив объектов).

"UserDetails": [                                    
     { "Name" : "Vanaraj", "Age" : "27", "country" : "India" },
     { "Name" : "Ranjit", "Age" : "26", "country" : "US" }
  ]

Имя, Возраст, Страна - три разных поля, их тип - текст.Из внешнего интерфейса ввод поступит как вышеприведенная комбинация всех трех полей с массивом.

Мне нужно написать запрос с этими тремя комбинациями и отфильтровать записи из индекса на основе комбинации всех трех полей и их значений.«UserDetails» - это просто имя, о котором я упомянул только три поля, присутствующие в индексе.

Поиск в индексе с комбинацией {"Name": "Vanaraj", "Age": "27", "country": "India"} и {"Name": "Ranjit", "Age":" 26 "," country ":" US "} и выходные данные должны совпадать с этими комбинациями.

1 Ответ

0 голосов
/ 03 мая 2019

Если я правильно понимаю ваш вопрос, я считаю, что вы ищете что-то вроде этого.

Это выглядит немного странно, но это примерно означает: «Найди меня (Ванарадж, 27 лет, в Индии) или (Ранджит, которому 26 в США)»

# Setup a sample index with data
PUT /stackoverflowtest/_doc/1
{ "Name" : "Vanaraj", "Age" : "27", "country" : "India" }
PUT /stackoverflowtest/_doc/2
{ "Name" : "Ranjit", "Age" : "26", "country" : "US" }
PUT /stackoverflowtest/_doc/3
{ "Name" : "Joe", "Age" : "38", "country" : "US" }

# Query that returns Vanaraj / 27 / India or Ranjit / 26 / US
POST /stackoverflowtest/_search
{
  "query": {
    "bool": {
      "should": [
        {
          "bool": {
            "must": [
              {
                "match": {
                  "Name": "Vanaraj"
                }
              },
              {
                "match": {
                  "Age": "27"
                }
              },
              {
                "match": {
                  "country": "India"
                }
              }
            ]
          }
        },
        {
          "bool": {
            "must": [
              {
                "match": {
                  "Name": "Ranjit"
                }
              },
              {
                "match": {
                  "Age": "26"
                }
              },
              {
                "match": {
                  "country": "US"
                }
              }
            ]
          }
        }
      ]
    }
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...