2017-01-12 3 views
0

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

Значения сохраняются следующим образом: "Руководство де 5 marchas" или "Руководство де 6 marchas" ....

Я создал этот запрос, чтобы вернуть все сохраненные значения:

GET /crawler10/crawler-vehicles10/_search 
{ 
    "size": 0, 
    "aggregations": { 
    "my_agg": { 
     "terms": { 
     "field": "cambio" 
     } 
    } 
    } 
} 

Но когда я запускаю возвращаемые значения, они выглядят так:

"aggregations": { 
     "my_agg": { 
     "doc_count_error_upper_bound": 2, 
     "sum_other_doc_count": 2613, 
     "buckets": [ 
      { 
       "key": "de", 
       "doc_count": 2755 
      }, 
      { 
       "key": "marchas", 
       "doc_count": 2714 
      }, 
      { 
       "key": "manual", 
       "doc_count": 2222 
      }, 
      { 
       "key": "modo", 
       "doc_count": 1097 
      }, 
      { 
       "key": "5", 
       "doc_count": 1071 
      }, 
      { 
       "key": "d", 
       "doc_count": 1002 
      }, 
      { 
       "key": "n", 
       "doc_count": 1002 
      }, 
      { 
       "key": "automática", 
       "doc_count": 935 
      }, 
      { 
       "key": "com", 
       "doc_count": 919 
      }, 
      { 
       "key": "6", 
       "doc_count": 698 
      } 
     ] 
     } 
    } 

ответ

1

Агрегации основаны на типе отображения сохраненного поля. Тип поля для cambio, по-видимому, установлен в analyzed (по умолчанию). Создайте индекс с отображением not_analyzed для вашего поля cambio.

Вы можете создать индекс с запросом PUT, как показано ниже (если ваша версия ES меньше 5), а затем вам нужно будет переиндексировать свои данные в индекс crawler10.

PUT crawler10/_mapping/ 
{ 
    "mappings": { 
    "crawler-vehicles10": { 
     "properties": { 
     "cambio": { 
      "type": "string" 
      "index": "not_analyzed" 

     } 
     } 
    } 
    } 
} 

Для ES v5 или более

PUT crawler10/_mapping/ 
{ 
    "mappings": { 
    "crawler-vehicles10": { 
     "properties": { 
     "cambio": { 
      "type": "keyword" 
     } 
     } 
    } 
    } 
} 
Смежные вопросы