Получить уникальные записи для нескольких полей в упругом поиске версии 6.2.3 - PullRequest
0 голосов
/ 27 июня 2018

Я новичок в упругом поиске. Использование версии 6.2.3 упругого поиска. Я хочу, чтобы эластичный поиск соответствовал приведенному ниже SQL-запросу:

SELECT DISTINCT customer_name , customer_services, customer_visible from customers;

У меня около 200 тысяч документов в упругом поиске. Я хочу уникальные записи для нескольких полей из документа. Эти поля customer_name, обслуживание клиентов, customer_visible

Я не ищу счетчик, я хочу получить данные для указанных полей без дубликатов данных для каждого поля.

Я пробовал несколько запросов, но это не дает мне уникальность для всех полей. Пожалуйста, помогите мне в предоставлении эластичного поиска 6.2.3 эквивалентного запроса для выше sql.

Ответы [ 2 ]

0 голосов
/ 02 июля 2018

Ниже приведен рабочий эквивалент ES 6.3, который работал для меня.

{
  "size": 0,
  "aggs": {
    "company_details": {
      "terms": {
        "size": 10000,
        "script": "doc['customer_global_cust_id'].value + ' | ' + doc['customer_name'].value + ' | ' + doc['customer_visible'].value + ' | ' +doc['customer_services'].values"
      }
    }
  }
}

Выше я использовал значения для customer_services, так как это поле массива в документе, остальные поля - просто строковые значения, поэтому используется значение.

0 голосов
/ 27 июня 2018

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

Но, глядя на эту публикацию , агрегирование терминов по нескольким полям не поддерживается в Elasticsearch, потому что оно не будет иметь хорошую производительность. Вы можете найти решение, предложенное в той же ссылке, об использовании script в терминах агрегации.

...