2015-01-09 2 views
1

Вот мой запрос ES:Elasticsearch возвращаются различные результаты

{ 
    "fields": [ 
     "news.authorname.raw", 
     "news.authorid" 
    ], 
    "query": { 
     "filtered": { 
     "filter": { 
      "terms": { 
      "news.authorid": [ 
       1, 
       2 
      ] 
      } 
     } 
     } 
    } 
    } 

С помощью этого запроса я получаю список пар {AuthorID, AUTHORNAME}. Этот список имеет повторяющиеся значения {authorid, authorname}, и мне просто нужно получить тот же список, но без повторений. Кажется, это не так сложно или, по крайней мере, это то, что я думал сегодня утром. Мое небольшое знание ES вместе с отсутствием документации заставляет меня отчаянно пытаться найти решение такой тривиальной проблемы.

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

Любой может дать вам руку? Должен ли я использовать какой-то другой подход?

Спасибо заранее!

+0

Взгляните на это [ответить] (https://stackoverflow.com/questions/24508191/elasticsearch-returning-only-documents-with-distinct-value) – notdang

+0

Хорошо, я вижу, но означает ли это, что нет способ получить результат (массив «хиты»), отфильтрованные с различными значениями? Я имею в виду, мне нужно «выбрать отдельный» автор, поэтому массив «bucket» мне не пригодится (массив идентификаторов ничего не говорит в frontend), а массив «hits» по-прежнему содержит дублированные значения. Я начинаю думать, что мне нужно сделать это так и отфильтровать отдельные значения по коду. К настоящему моменту я сделаю это, но если кто-то может подтвердить, является ли это единственным способом или есть какое-то обходное решение, чтобы результаты были отфильтрованы прямо от результата ES, я бы очень признателен. Спасибо, btw !! – user3407868

ответ

0

Я хотел бы предложить использовать source filtering:

{ 
    "_source": [ "news.authorname.raw", "news.authorid" ], 
    "query": { 
     "filtered": { 
     "filter": { 
      "terms": { 
      "news.authorid": [ 
       1, 
       2 
      ] 
      } 
     } 
     } 
    } 
    } 

Это, как правило, проще в обращении, чем поля, которые иногда выглядят как декартово произведение.

+0

Спасибо nefo_x, я пробовал, но я продолжаю получать повторяющиеся значения. – user3407868

Смежные вопросы