ElasticSearch加not_analyzed求解
新手想请教个问题,按网上教程搭建的logstash+elasticsearch,搭好后按词查看数据时发现一个问题,比如查看path,
我的path是/var/log/message,按path建表时,发现它把词分段后再一起排序,如下图
跟我想要的效果不同,我想要的效果是只有/var/log/messages一个字段的数据
在网上找到的办法是在mapping中的字段加"index":"not_analyzed"
在网上找了一天,试了N种方法都不行,求了解这个问题的大神们提供完整解决方法!!
先谢为上!
附我试过的主要方法:
一、复制logstash-2014.10.23的mapping到文本,在message_log的agent段里加上"index":"not_analyzed",删除logstash-2014.10.23,复制文本内容新建索引
结果:查看新建的logstash-2014.10.23的mapping时,发现agent段还是没有"index":"not_analyzed",ElasticSearch还是按message_log给的数据默认分段;
二、curl -XPUT localhost:9200/logstash-2014.10.23/ -d '
{"message_log" : { "properties" : { "path" : { "type" : "string","index" : "not_analyzed","norms" : { "enabled" : false }, "fields" : {"raw" : { "type" : "string", "index" : "not_analyzed", "ignore_above" : 256}}}}}}'
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
得到一点苗目:ElasticSearch里面原来带了一个动态模板,匹配名字为logstash-*的索引,只要新建这种名字的索引,被会套用这个动态模板,所以我的两个方法都不行,因为修改后还是会被模板给改回来...
curl -XGET localhost:9200/_template/logstash
{
"logstash" : {
"order" : 0,
"template" : "logstash-*",
"settings" : {
"index.refresh_interval" : "5s"
},
"mappings" : {
"_default_" : {
"dynamic_templates" : [ {
"string_fields" : {
"mapping" : {
"index" : "analyzed",
"omit_norms" : true,
"type" : "string",
"fields" : {
"raw" : {
"index" : "not_analyzed",
"ignore_above" : 256,
"type" : "string"
}
}
},
"match_mapping_type" : "string",
"match" : "*"
}
} ],
"properties" : {
"geoip" : {
"dynamic" : true,
"path" : "full",
"properties" : {
"location" : {
"type" : "geo_point"
}
},
"type" : "object"
},
"@version" : {
"index" : "not_analyzed",
"type" : "string"
}
},
"_all" : {
"enabled" : true
}
}
},
"aliases" : { }
}
}