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