在现有索引中创建一个新字段 - ElasticSearch

时间:2021-07-29 21:04:26

标签: elasticsearch kibana

我想创建一个新字段并将其添加到现有索引中,这样我就可以向该新字段发送唯一值。我希望有一个 API 可以做到这一点,而不必在 Kibana 的 CLI 中进行。但是我遇到了这个 article,它告诉您如何向现有索引添加新字段。

我尝试将其添加到 _source 字段下,但它不允许我这样做。

PUT customer-simulation-es-app-logs-development-2021-07/_mapping
{
  "_source":{
    "TransactionKey":{
      "type": "keyword"
    }
  }
}

然后我将它添加到 properties 中,这允许我:

PUT customer-simulation-es-app-logs-development-2021-07/_mapping
{
  "properties":{
    "TransactionKey":{
      "type": "keyword"
    }
  }
}

为了确保它已更新,我运行了 cmd GET customer-simulation-es-app-logs-development-2021-07/_mapping,它确实返回了它。

{
  "customer-simulation-es-app-logs-development-2021-07" : {
    "mappings" : {
      "properties" : {
        "@timestamp" : {
          "type" : "date"
        },
        "TransactionKey" : {
          "type" : "keyword"
        },
        "exceptions" : {
          "properties" : {
            "ClassName" : {
              "type" : "text",
              "fields" : {
                "keyword" : {
                  "type" : "keyword",
                  "ignore_above" : 256
                }
              }
            },
.....

但是当我去 Discover 并为字段输入 TransactionKey 时,什么也没有弹出。我是否没有将新字段正确添加到现有索引中?

1 个答案:

答案 0 :(得分:1)

如果您运行的是 7.11 之前的版本,那么您需要转到堆栈管理 > 索引模式并刷新索引模式,然后才能在发现视图中看到您的新字段。每次索引映射更改时都需要执行此操作。

从 7.11 开始,索引模式在需要时都是 refreshed automatically