ELASTICSEARCH — перечислите поля и уникальные значения jsonlist поля и уникальные значения json

#elasticsearch

#elasticsearch

Вопрос:

Я ищу способ получить уникальные значения поля. в этом случае я хочу, чтобы он возвращал не уникальное значение из счетчика агрегации, а уникальные поля и значения.

т. е. JSON:

      "name" : james,
      "city" : "chicago"
    },
    {
      "name" : james,
      "city" : "san francisco"
    },
    {
      "name" : james,
      "city" : "chicago"
    },
     {
      "name" : Mike,
      "city" : "chicago"
    },
     {
      "name" : Mike,
      "city" : "texas"
    },
     {
      "name" : Mike,
      "city" : "texas"
    },
     {
      "name" : Peter,
      "city" : "chicago"
    },
  

ВЫВОД:

  "name" : james,
  "city" : "chicago"
},
{
  "name" : james,
  "city" : "san francisco"
},
 {
  "name" : Mike,
  "city" : "chicago"
},
 {
  "name" : Mike,
  "city" : "texas"
},
 {
  "name" : Peter,
  "city" : "chicago"
},
  

Ответ №1:

С этой целью вы можете использовать сценарии. Например, следующий запрос вернет вам точно все уникальные комбинации:

 {
  "size": 0,
  "aggs": {
    "unique": {
      "terms": {
        "script": {
          "source": "[doc.name.value ?: 'no_name', doc.city.value ?: 'no_city'].join('-')"
        }
      }
    }
  }
}
  

Обратите внимание, что если это всего лишь одноразовый запрос для получения некоторой информации, это нормально, но если нет, то было бы лучше иметь другое поле, которое содержит оба значения и по которому можно выполнить обычную terms агрегацию.