使用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文档上只出现一次,说是自动生成的

https://github.com/elastic/apm-server#update

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
2
setup.template.fields: "${path.config}/fields.yml"
setup.template.overwrite: false

设置文档

https://www.elastic.co/guide/en/apm/server/master/configuration-template.html

https://github.com/elastic/beats/issues/8607

随后重启apm-server

1
systemctl restart apm-server

进入kibana 查看es的mapping 发现没有更新
可以删除当天的index,或者等第二天新建index时
然后新的index就发现已经更新了

可以愉快地检索分析和做图了

待测试能不能不删除index 直接更新