elasticsearch &引用;映射冲突&引用;基巴纳错误,elasticsearch,logstash,kibana,elastic-stack,elasticsearch,Logstash,Kibana,Elastic Stack" /> elasticsearch &引用;映射冲突&引用;基巴纳错误,elasticsearch,logstash,kibana,elastic-stack,elasticsearch,Logstash,Kibana,Elastic Stack" />

elasticsearch &引用;映射冲突&引用;基巴纳错误

elasticsearch &引用;映射冲突&引用;基巴纳错误,elasticsearch,logstash,kibana,elastic-stack,elasticsearch,Logstash,Kibana,Elastic Stack,我已经在我的机器上安装了一个麋鹿堆。Kibana的版本是5.2.1,弹性版本是5.2.1。所以基本上一切都是最新的。 但现在我得到以下警告 “映射冲突!2个字段被定义为与此模式匹配的索引中的几种类型(字符串、整数等)。您可能仍然可以在Kibana的某些部分中使用这些冲突字段,但对于要求Kibana知道其类型的函数,这些字段将不可用。更正此问题需要重新为数据编制索引。” 这两个字段是“geoip.coordinates”和“geoip.location” 我在谷歌上搜索解决方案,得到了类似“ReI

我已经在我的机器上安装了一个麋鹿堆。Kibana的版本是5.2.1,弹性版本是5.2.1。所以基本上一切都是最新的。 但现在我得到以下警告

“映射冲突!2个字段被定义为与此模式匹配的索引中的几种类型(字符串、整数等)。您可能仍然可以在Kibana的某些部分中使用这些冲突字段,但对于要求Kibana知道其类型的函数,这些字段将不可用。更正此问题需要重新为数据编制索引。”

这两个字段是“geoip.coordinates”和“geoip.location

我在谷歌上搜索解决方案,得到了类似“ReIndex数据”的结果。但我对麋鹿是新手,不知道如何重新给它编制索引

这是我的template.json文件

{
"mappings": {
"_default_": {
  "_all": {
    "enabled": true,
    "norms": {
      "enabled": false
    }
  },
  "dynamic_templates": [
    {
      "template1": {
        "mapping": {
          "doc_values": true,
          "ignore_above": 1024,
          "index": "not_analyzed",
          "type": "{dynamic_type}"
        },
        "match": "*"
      }
    }
  ],
  "properties": {
    "@timestamp": {
      "type": "date"
    },
    "message": {
      "type": "string",
      "index": "analyzed"
    },
    "offset": {
      "type": "long",
      "doc_values": true
    },
    "geoip"  : {
      "type" : "object",
      "dynamic": true,
      "properties" : {
        "location" : { "type" : "geo_point" },
        "coordinates" : { "type" : "geo_point" }
      }
    }
  }
}
},
 "settings": {
  "index.refresh_interval": "5s"
},
"template": "filebeat-*"
}
以及我的logstash.conf文件的输出部分

output {

 elasticsearch {
    hosts => ["localhost:9200"]
    sniffing => true
    manage_template => false
    index => "%{[@metadata][beat]}-%{+YYYY.MM.dd}"
    document_type => "%{[@metadata][type]}"
    }
}

我不知道该怎么解决。如果您需要任何帮助,请在elasticsearch控制台中编写
GET/_cat/index?v
命令,以获取所有索引的相关信息。“kibana-->管理-->索引模式”不会告诉您所有的索引。它只是告诉您已配置的索引模式。

当您将新字段添加到kibana时,您最需要决定的是它的类型。 之后-您将尝试编辑/etc/logstash/conf.d/filters.conf:

filter {
  if [headers][request_path] == "/stats/" {
    ...
    mutate {
      remove_field => "[headers]"
      convert => {
        "intCourseId"                   => "integer"
        "intLessonId"                   => "integer"
        "intQuestionId"                 => "integer"
        ...
      }
    }
  }
}
当您遵循此模式时,将不会发生冲突

否则,您可以修复elasticsearch索引中不正确的字段值。Kibana将于明天重新编制其指数。 我在ruby上的脚本do it:

#/usr/bin/env ruby
#查找并替换elasticsearch索引中不正确的字段值。
#运行:
#ruby./bin/fix_elk_属性_冲突elk_用户=elk_密码=索引_类型=主机=
#port=attribute\u name=attribute\u check\u regexp='^\d+$'
#名称、密码-nginx基本身份验证凭据
#index_type=-弹性搜索索引的类型
#主机=端口=-elasticsearch节点的主机和端口
#attribute_name=-需要更正的字段的名称
#属性\u check\u regexp-用于检查值是否为字符串的regexp
#
需要“net/http”
需要“uri”
需要“json”
命令行参数=散列[ARGV.map{{| x | x.split('=')}]
USER\u NAME=命令行参数['elk\u USER']
USER\u PASSWORD=命令行参数['elk\u PASSWORD']
INDEX\u NAME=命令行参数['INDEX\u type']
HOST=命令行参数['HOST']
端口=命令行参数['PORT']
属性名称=命令行参数['ATTRIBUTE\u NAME']
ATTRIBUTE\u CHECK\u REGEXP=REGEXP.new(命令行参数['ATTRIBUTE\u CHECK\u REGEXP']))
def更新文档(索引id:,文档id:,请求正文:)
url=“http://{USER_NAME}@{HOST}:{PORT}/{index_id}/{index_NAME}/{doc_id}”
放置url:url
放置请求\u正文:请求\u正文
uri=uri.parse(url)
request=Net::HTTP::Put.new(uri)
请求['Content-Type']='application/json'
request.basic\u auth用户名、用户名和密码
request.body=JSON.dump(request\u body)(如果是request\u body)
response=Net::HTTP.start(uri.hostname,uri.port)do | HTTP|
http.request(请求)
结束
data=JSON.parse(response.body)
将请求_完成_与_按摩:数据
结束
def查找所有文档(命令:,请求正文:nil)
uri=uri.parse(“http://{USER_NAME}@{HOST}:{PORT}{command}”)
request=Net::HTTP::Get.new(uri)
请求['Content-Type']='application/json'
request.basic\u auth用户名、用户名和密码
request.body=JSON.dump(request\u body)(如果是request\u body)
response=Net::HTTP.start(uri.hostname,uri.port)do | HTTP|
http.request(请求)
结束
data=JSON.parse(response.body)
{
结果:(数据['hits']|{}]['hits']|[],
总计:(数据['hits']|{})['total']
}
结束
doc_指针=0
页面大小=100
总页数=页数+100
总计数消息=真
错误=[]
而doc\u指针错误很可能您有多个
filebeat-*
索引,其中一个
geoip.location
geoip.coordinates
字段未声明为
geo_point
,而是声明为字符串。可能您当时没有安装模板。可能吗?那我该怎么解决呢?你有多少个索引?一个名为filebeat的索引:-*我去kibana-->管理-->索引模式得到这个答案是对的吗?这样做了,我得到了多个这样的结果,黄色开放文件BEAT-2017.04.29 IPa9v_5GQB6-EOXovKVCWg 5 1 465671 0 388.3mb 388.3mb我遵循此[站点在没有停机但没有luckare的情况下重新索引您确定重新索引操作进行得很好,没有任何错误吗?@Easy Install