gpt4 book ai didi

elasticsearch - Kibana报告字段冲突,我该如何解决?

转载 作者:行者123 更新时间:2023-12-03 01:41:11 28 4
gpt4 key购买 nike

在Kibana中,我注意到在进行索引模式刷新后,我的一个字段显示为conflicted

示例:

Conflicting field in Kibana

我知道这是因为Elastic Search在该字段中发现了不同类型的值,我该如何确定呢?这导致我的视​​觉效果破裂,因为它们无法处理冲突的字段。
如何解决现有数据的此问题?

最佳答案

经过许多小时的研究并浏览了Elastic文档,我终于找到了解决我问题的答案。

在Elastic Search 5.1(我使用的版本)中,您可以为那些“有问题的”特定索引重新编制索引。

您可以在Kibana中找到它,方法是单击Management> Index Patterns并查找显示为conflicted的字段。然后单击相应的铅笔图标以查看该字段的详细信息。在其中将显示不同字段类型下的索引。

我在Power-Shell中编写了一个脚本,该脚本通过指定“问题索引”为我自动完成此任务,然后执行以下操作(假设您有问题的索引称为:log-20170101):

  • log-20170101-1创建映射
  • log-20170101重新索引为log-20170101-1
  • 删除log-20170101
  • log-20170101创建映射
  • log-20170101-1重新索引为log-20170101
  • 删除log-20170101-1

  • 现在,当您在Kibana中刷新索引格式时,您会注意到该字段不再是 conflicted

    您可以阅读以下内容: MappingsRe-Indexing

    确保在下面指定新的映射时,使用要查找的适当的映射数据类型。

    您可以通过以下方式查询Elastic API获取现有映射:
    GET /_mapping/<your mapping name>

    这是我在Power-Shell中执行的 骨架(示例)脚本,虽然非常基本,但我认为它可以提供帮助。

    $index_list = @( 
    "log-20170101"
    )

    $index_list | % {
    $index_name = $_

    $mapping_body = "
    {
    ""mappings"": {
    ""logevent"": {
    ""properties"": {
    ""@timestamp"": {
    ""type"": ""date""
    },
    ""correlationId"": {
    ""type"": ""text"",
    ""fields"": {
    ""keyword"": {
    ""type"": ""keyword"",
    ""ignore_above"": 256
    }
    }
    },
    ""duration"": {
    ""properties"": {
    ""TotalMilliseconds"": {
    ""type"": ""float""
    }
    }
    }
    }
    }
    }
    }"

    $reindex_body = "{
    ""source"": {
    ""index"": ""$index_name""
    },
    ""dest"": {
    ""index"": ""$index_name-1""
    }
    }"

    $reindex_body_reverse = "{
    ""source"": {
    ""index"": ""$index_name-1""
    },
    ""dest"": {
    ""index"": ""$index_name""
    }
    }"

    Invoke-WebRequest -Uri http://elasticserver:9200/$index_name-1 -Method Put -Body $mapping_body
    Invoke-WebRequest -Uri http://elasticserver:9200/_reindex -Method Post -Body $reindex_body
    Invoke-WebRequest -Uri http://elasticserver:9200/$index_name -Method Delete
    Invoke-WebRequest -Uri http://elasticserver:9200/$index_name -Method Put -Body $mapping_body
    Invoke-WebRequest -Uri http://elasticserver:9200/_reindex -Method Post -Body $reindex_body_reverse
    Invoke-WebRequest -Uri http://elasticserver:9200/$index_name-1 -Method Delete
    }

    编辑

    有关如何设置默认映射的信息,请参见 post,以尝试防止此问题再次发生。

    关于elasticsearch - Kibana报告字段冲突,我该如何解决?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47345816/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com