2016-07-21 2 views
2

У меня есть данные ниже. Я хочу, чтобы избежать дублирования имен области практики в результате. Как можно избежать дублирования в моем результатах поиска эластичности. Отправьте меня в Решения.избежать повторений в эластичных результатах поиска

Array 
(
    [0] => Array 
     (
      [_index] => vendors 
      [_type] => practiceareas 
      [_id] => 240 
      [_score] => 
      [_source] => Array 
       (
        [practice_area_id] => 237 
        [id] => 240 
        [practice_area_name] => Anemia 
        [practice_area_image] => 
        [created_date] => 2016-07-04 14:51:46 
        [status] => 1 
        [industry_id] => 9 
        [category_id] => 14 
        [vendors_count] => 26 
        [services_count] => 0 
        [products_count] => 0 
       ) 

      [sort] => Array 
       (
        [0] => 26 
       ) 

     ) 

    [1] => Array 
     (
      [_index] => vendors 
      [_type] => practiceareas 
      [_id] => 582 
      [_score] => 
      [_source] => Array 
       (
        [practice_area_id] => 364 
        [id] => 582 
        [practice_area_name] => Joint Pains 
        [practice_area_image] => 
        [created_date] => 2016-07-04 14:51:47 
        [status] => 1 
        [industry_id] => 9 
        [category_id] => 12 
        [vendors_count] => 26 
        [services_count] => 0 
        [products_count] => 0 
       ) 

      [sort] => Array 
       (
        [0] => 26 
       ) 

     ) 

    [2] => Array 
     (
      [_index] => vendors 
      [_type] => practiceareas 
      [_id] => 1315 
      [_score] => 
      [_source] => Array 
       (
        [practice_area_id] => 237 
        [id] => 1315 
        [practice_area_name] => Anemia 
        [practice_area_image] => 
        [created_date] => 2016-07-04 14:51:46 
        [status] => 1 
        [industry_id] => 9 
        [category_id] => 15 
        [vendors_count] => 26 
        [services_count] => 0 
        [products_count] => 0 
       ) 

      [sort] => Array 
       (
        [0] => 26 
       ) 

     ) 
) 

Спасибо.

ответ

0

Вы можете использовать Field Collapsing, чтобы представить результаты поиска, сгруппированные по определенному полю. Группировка по имени подразумевает необходимость агрегирования терминов.

Чтобы иметь возможность группироваться по «practice_area_name», поле должно быть доступно в его исходной форме not_analyzed. В противном случае вам следует сгруппировать «practice_area_id», чтобы избежать поля not_analyzed.

"aggs": { 
    "vendors": { 
     "terms": { 
     "field": "practice_area_name" 
     }, 
     "aggs": { 
     "dedup_docs": { "top_hits": { "size": 1 }} 
     } 
    } 
    } 

Примечание: Агрегирование top_score упорядочивает условия в совокупности пользователей по документу топ-скоринга в каждом ведре.

+0

При добавлении выше код этой ошибки Найти: [причина] => Массив ( [тип] => script_exception [причина] => Сценарии типа [инлайн], операция [Aggs] и языки [заводной] являются отключено –

+0

[причина] => сценарии типа [inline], операции [aggs] и lang [groovy] отключены ) –

+0

сценарии по умолчанию отключены в elasticsearch. Я обновляю мой ответ, чтобы удалить скрипты для оценки – Rahul

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