2016-02-04 2 views
1

Я использую токенизатор иерархии пути для поля в Logstash/ElasticSearch. Таким образом, если поле путь как/а/б/с, то токенизатор преобразует его вИерархия путей Эластичный поиск и глубина папок?

/a 
    /a/b 
    /a/b/c 

Я хочу, чтобы генерировать статистику, как

a - 3 hits 
    b - 2 hits 
    c - 1 hit 

Что является наилучшим способом сделать это? Кроме того, мне интересно, есть ли способ добавить глубину папки в отдельном поле.

ответ

0

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

Определите свой собственный анализатор:

PUT /test_index 
{ 
    "settings": { 
    "analysis": { 
     "analyzer": { 
     "nonword": { 
      "type": "pattern", 
      "pattern": "/" 
     } 
     } 
    } 
    } 
} 

Создать отображение:

POST /test_index/_mapping/test_1 
{ 
    "properties": { 
    "dir": { 
     "type": "string", 
     "index": "analyzed", 
     "analyzer": "nonword", 
     "fields": { 
     "un_touched": { 
      "type": "string", 
      "index": "not_analyzed" 
     } 
     } 
    } 
    } 
} 

Примечание: «un_touched» поле сохраняется для проведения исходной версии данных ,

данных заселить и выполнить агрегацию:

GET /test_index/test_1/_search 
{ 
    "aggs": { 
    "my_agg": { 
     "terms": { 
     "field": "dir", 
     "size": 0 
     } 
    } 
    } 
} 

Примечание: Это только минимальный пример, и вы действительно должны заботиться о шаблоне;

+0

Hi Shalin, Большое вам спасибо! Я пытался, но я не мог заставить его работать до сих пор. Я буду держать вас в курсе. К сожалению, –

+0

Дальнейший поиск в Google предполагает, что Multi_Field был удален из ElasticSearch в 2014 году. –

+0

О, извините .. вот исправление для многопоточного поля: https://www.elastic.co/guide/en/elasticsearch/reference/2 .x/_multi_fields.html Я обновлю свой ответ; благодаря; –