ES APM字段检索问题解决
使用apm时,处理数据时发现 有的字段没法检索,发现是没有建立mapping的原因,可以看到有个小三角,
一般这种情况下, 在 management > index Patterns 中点击刷新就行
但是跟预期不同的是,fields数量并没有增加,还是建立不了mapping.
尝试修改mapping文件 发现只有通过api的方式修改,只能全量更新,而且点击refresh field list 后,改动又会变回去。所以放弃这种方法。
搜索网络 发现一个相似的问题
https://discuss.elastic.co/t/no-cached-mapping-for-this-field-apm/151196
I am using APM to monitor my node.js application. In Kibana, I see some fields with the error : “ no cached mapping for this field”. As a result, I cannot run any analytics or visualization on these fields.
文章中提到的一个方法是设置fields.yml
fields.yml 在apm-server文档上只出现一次,说是自动生成的
Update
Each beat has a template for the mapping in elasticsearch and a documentation for the fields which is automatically generated based on fields.yml. To generate required configuration files and templates run:
make index-template update
查看已经生成的fields.yml
cd /etc/apm-server
可以看到这个配置文件跟kibana中的mapping 很像,修改这个应该可以实现修改mapping的目的
其中http中 的设置在这里,可以看到dynamic为false 所以也解释了为什么怎么刷新fields都不会增加
编辑/etc/apm-server 文件夹下的 fields.yml
修改相应字段设置 常用的加上 dynamic: true
然后修改 apm-server.yml 中的template配置
https://github.com/elastic/apm-server/blob/master/apm-server.yml#L180-L214
1 | setup.template.fields: "${path.config}/fields.yml" |
设置文档
https://www.elastic.co/guide/en/apm/server/master/configuration-template.html
随后重启apm-server
1 | systemctl restart apm-server |
进入kibana 查看es的mapping 发现没有更新
可以删除当天的index,或者等第二天新建index时
然后新的index就发现已经更新了
可以愉快地检索分析和做图了
待测试能不能不删除index 直接更新