内容简介:今天有个搜索的小需求,找了下解决方案,好久没弄了,生疏了很多。需求就是原来一篇文章一个品牌,原来使用elk的整型字段存储,现在一篇文章对应多个品牌,如何设计呢?解决方案就是在文章索引中新增一个数组字段,那么如何将数据录入进去呢?以前的整型字段值是否要合并进新字段?或者ELK同时对新老字段进行查询?
今天有个搜索的小需求,找了下解决方案,好久没弄了,生疏了很多。
需求就是原来一篇文章一个品牌,原来使用elk的整型字段存储,现在一篇文章对应多个品牌,如何设计呢?
解决方案就是在文章索引中新增一个数组字段,那么如何将数据录入进去呢?以前的整型字段值是否要合并进新字段?或者ELK同时对新老字段进行查询?
使用logstash的split和merge解决:
mutate { split => { "brand_ids" => ',' } } mutate { merge => ["brand_ids", "brand_id"]} mutate{ convert => {"brand_ids"=> "integer"} }
新字段是用逗号分隔的,表示多个品牌,先拆分成数组,然后将旧的品牌值合并到数组中,这样ELK查询新字段就可以了。
merge:
Merge two fields of arrays or hashes. String fields will be automatically be converted into an array
注意在logstash中并没有数组类型,integer仅仅表示数组值的类型。
convert:
Convert a field’s value to a different type, like turning a string to an integer. If the field value is an array, all members will be converted.
那么ELK如何查询呢?很简单:
"term": { "brand_ids":3 }
由于很久没弄了,所以生疏了很多,调试不方便,尤其logstash特别慢,修改配置文件后再重新运行很耗费时间,可以:
bin/logstash -f apache.config --config.reload.automatic
-r 参数可以自动加载新的配置文件。
深思了很多,如何才能更熟练,困难的是要重新导入数据到ELK中,不过只要删除logstash的pos文件就可以全量重新导入了,不会影响服务。
参考:
- https://www.elastic.co/guide/en/logstash/current/plugins-filters-mutate.html#plugins-filters-mutate-merge
- https://www.elastic.co/guide/en/logstash/current/plugins-filters-mutate.html#plugins-filters-mutate-convert
- https://www.elastic.co/guide/en/logstash/current/reloading-config.html
以上所述就是小编给大家介绍的《充分利用logstash的功能》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- 利用PLC自带网络功能劫持PLC
- 利用云开发优化博客小程序(二)——评论功能
- 利用云开发优化博客小程序(三)——生成海报功能
- 利用Android 系统的原生 API 实现分享功能
- AOP:利用Aspectj注入代码,无侵入实现各种功能
- [原理OK]利用Redis的notifications功能实现延时任务
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
第二曲线:跨越“S型曲线”的二次增长
[英]查尔斯·汉迪(Charles Handy) / 苗青 / 机械工业出版社 / 2017-6 / 49.00
S型曲线是每个组织和企业在预测未来时一定会参考的工具,一切事物的发展都逃不开S型曲线(“第一曲线”)。 然而,从公司组织、企业治理、市场的变化,到个人职业发展、社会人际关系以及未来的教育与社会价值,多维度地探讨这个世界需要重新以不同的角度来思考问题,不能够总是停留在“第一曲线”的世界。 如果组织和企业能在第一曲线到达巅峰之前,找到带领企业二次腾飞的“第二曲线”,并且第二曲线必须在第一曲......一起来看看 《第二曲线:跨越“S型曲线”的二次增长》 这本书的介绍吧!