Elasticsearch 棄用 string,並且 text 不支援 sort 排序

栏目: 后端 · 发布时间: 6年前

内容简介:最近在搞公司的 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 箭頭卻不見了

Elasticsearch 棄用 string,並且 text 不支援 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 囉。

參考資料:


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

The Zen of CSS Design

The Zen of CSS Design

Dave Shea、Molly E. Holzschlag / Peachpit Press / 2005-2-27 / USD 44.99

Proving once and for all that standards-compliant design does not equal dull design, this inspiring tome uses examples from the landmark CSS Zen Garden site as the foundation for discussions on how to......一起来看看 《The Zen of CSS Design》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

SHA 加密
SHA 加密

SHA 加密工具

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具