1. 程式人生 > >關於Elasticsearch與Kibana之間的分詞問題解決方案

關於Elasticsearch與Kibana之間的分詞問題解決方案

         在Kibana的展示頁面中,我們點選Table的左側欄,發現Elasticsearch中的資料在展示中是正確的資料,比如:agent中www.baidu.com/test,該介面中會正確的顯示為www.baidu.com/test,但是如果我們將該欄位用Term展示出來的話,就會被分為www.baidu.com和test兩組,通過檢視CURL並沒有發現其有任何問題,最後找到原因為Elasticsearch將其結果分開給了Kibana,所以Kibana會分開展示。

         通過研究,我們資料來源為logstash自動收集過來的,索引是自動生成的,我們並不能去修改索引的Mapping將其設定為不分詞,所以我們只能從其源頭下手,當其建立的時候自動設定為不分詞,這時我們就需要配置模板了。

程式碼如下:

{

"template" :"logstash*",

"order" : 0,

"settings" : {

"number_of_shards" : 5

},

"mappings" : {

"fluentd" : {

"properties":{

"request_dir" :{"type":"string","index" :"not_analyzed"},

"http_user_agent" : {"type" : "string","index" :"not_analyzed" }

}

}

}

}

其中重要的是mappings 中的設定,一級一級的按照資料來源正則分解,"index" : "not_analyzed"為不分詞,便於搜尋