内容简介:最近在搞公司的 Elasticsearch 弄的頭昏眼花,主要希望換掉舊的 Elasticsearch,但是在過程中踩了一堆坑 …這次遇到的問題是在 Logstash filter 切出來的 field 在 Kibana 上面都沒有 sort,但是舊版 Kibana 3.x 不用特別處理就可以有 sort 的功能。花了一個早上 Google 找了一堆文件發現 Elasticsearch 在 5.x 的時候就棄用 string 改成 text,所以在 Kibana 上預設的 template 用
最近在搞公司的 Elasticsearch 弄的頭昏眼花,主要希望換掉舊的 Elasticsearch,但是在過程中踩了一堆坑 …
這次遇到的問題是在 Logstash filter 切出來的 field 在 Kibana 上面都沒有 sort,但是舊版 Kibana 3.x 不用特別處理就可以有 sort 的功能。
正常狀況下,會有箭頭可以讓你 sort 排序,但是 Logstash 切出來的 field sort 箭頭卻不見了
花了一個早上 Google 找了一堆文件發現 Elasticsearch 在 5.x 的時候就棄用 string 改成 text,所以在 Kibana 上預設的 template 用 match_mapping_type 把 送來的 string 轉成 text 格式 …
GET _template/ { "mappings": { "_default_": { "dynamic_templates": [ { "message_field": { "path_match": "message", "match_mapping_type": "string", "mapping": { "type": "text", "norms": false } } }, { "string_fields": { "match": "logstash-*", "match_mapping_type": "string", "mapping": { "type": "text", "norms": false, "fields": { "keyword": { "type": "keyword", "ignore_above": 256 } } } } } ] } }
在上面可以看到當 index 符合預設的 logstash-* 時,只要 type 為 string 就會被 match_mapping_type 轉成 text,但 field.keyword 為了要讓你可以 Query 所以 Data type 不是 text。
然後 Elasticsearch 6.x 開始 text 就不允許 sort,所以導致我從 Logstash 切出來的 field 都變成 text 進而不能 sort。
要解決可以直接修改 template 讓 string 進來不是轉成 text,而是 keyword (或其他 Data type)
PUT _template/defaultKeyword { "defaultKeyword": { "order": 0, "index_patterns": [ "*" ], "settings": { "index": { "refresh_interval": "5s" } }, "mappings": { "_default_": { "dynamic_templates": [ { "message_field": { "path_match": "message", "match_mapping_type": "string", "mapping": { "type": "text", "norms": false } } }, { "string_fields": { "match": "*", "match_mapping_type": "string", "mapping": { "type": "keyword", "norms": false, "fields": { "keyword": { "type": "keyword", "ignore_above": 256 } } } } } ], "properties": { "@timestamp": { "type": "date" }, "@version": { "type": "keyword" }, "geoip": { "dynamic": true, "properties": { "ip": { "type": "ip" }, "location": { "type": "geo_point" }, "latitude": { "type": "half_float" }, "longitude": { "type": "half_float" } } } } } } } }
index_patterns 要特別注意是否有符合你的 index name,最後 rebuild index 就會生效新的 data type 囉。
參考資料:
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- 支援一波 《面试数十人有感》
- gofight 支援檔案上傳測試
- iOS App 如何支援 RTL 語言
- RDS 支援 Storage Auto Scaling
- 開源專案 Gitea 支援 OAuth Provider
- 如何使 VS Code 支援 CSS Intellisense ?
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
JavaScript语言精粹
道格拉斯•克罗克福德 (Douglas Crockford) / 赵泽欣、鄢学鹍 / 电子工业出版社 / 2012-9-1 / 49.00元
JavaScript 曾是“世界上最被误解的语言”,因为它担负太多的特性,包括糟糕的交互和失败的设计,但随着Ajax 的到来,JavaScript“从最受误解的编程语言演变为最流行的语言”,这除了幸运之外,也证明了它其实是一门优秀的语言。Douglas Crockford 在本书中剥开了JavaScript 沾污的外衣,抽离出一个具有更好可靠性、可读性和可维护性的JavaScript 子集,让你看......一起来看看 《JavaScript语言精粹》 这本书的介绍吧!