input {
http {
id => "data_http_input"
filter {
fingerprint {
source => [ "sensor_id", "date"]
target => "[@metadata][fingerprint]"
method => "SHA1"
key => "liuxg"
concatenate_sources => true
base64encode => true
output {
stdout {
codec => rubydebug
elasticsearch {
manage_template => "false"
index => "fingerprint"
hosts => "localhost:9200"
document_id => "%{[@metadata][fingerprint]}"
在这里,我们使用 http input 来收集数据。在这里,我们使用 sensor_id 及 date 这两个字段来生成一个 fingerprint。也就是说,只有这两个字段是一样的,那么无论我们输入多少次数据,那么在 Elasticsearch 中将不会有新的数据生成,因为它们的 ID 都是一样的。 我们启动 Logstash:
sudo ./bin/logstash -f ~/data/fingerprint/logstash_fingerprint.conf
我们可以在另外一个 console 中打入如下的命令:
curl -XPOST --header "Content-Type:application/json"http://localhost:8080/" -d '{"sensor_id":1, "date": "2015-01-01", "reading":16.24}'
这个时候,我们可以在 Logstash 的 console 中查看到:
我们在 Kibana 的 Dev Tools 中进行查看:
GET _cat/indices
我们可以看到有一个新的 fingerprint 的索引已经生产了。
我们查看 fingerprint 的文档数:
GET fingerprint/_count
结果显示:
"count" : 1,
"_shards" : {
"total" : 1,
"successful" : 1,
"skipped" : 0,
"failed" : 0
我们在另外一个 console 中打入无数次的如下的命令:
我们发现,只要是 sensor_id 和 date 的值都是一样的,那么 fingerprint 的文档数永远是 1。当然你也可以更新其它字段的值,比如 reading 字段的值为20,那么新的值将会在里面得以体现。这个操作相当于更新的操作。
如果我们改动一下 sensor_id 的值为2,也就是:
curl -XPOST --header "Content-Type:application/json"http://localhost:8080/" -d '{"sensor_id":2, "date": "2015-01-01", "reading":16.24}'
那么我们重新查看 fingerprint 索引的文档数:
GET fingerprint/_count
上面显示文档的数值为2。也就是说,在索引 fingerprint 中,只要是 sensor_id 及 date 的数值是一样的,那么我们将永远只有一个文档,而且是永远不会重复的。
如你在本文中所看到的,指纹过滤器可以用于多种用途,并且是你应该在Logstash生态系统中熟悉的插件。它可以很方便地让我们保持我们的文档的唯一性,而不招致重复的数据生成。
声明:本文由原文作者“ Elastic 中国社区布道师——刘晓国”授权转载,对未经许可擅自使用者,保留追究其法律责任的权利。
出处链接:https://elasticstack.blog.csdn.net/.
elasticsearch 怎么删除过期的数据
使用elasticsearch收集日志进行处理,时间久了,很老的数据就没用了或者用途不是很大,这个时候就要对过期数据进行清理.但是es5.0之后就不支持ttl,那怎么办呢?
1,请使用官方的工具elasticsearch-curator
2,使用delete-by-query方法删除特定时间范围的数据
第一种这里不再介绍了,直接看官网吧,主要说下第二种
JasonLee实时计算
基于Elasticsearch向量检索的以文搜图
Elasticsearch 基础检索(全文检索/多语言搜索/地理位置查询)
使用检索分析服务Elasticsearch版实现基础检索
如何采集PolarDB-X SQL日志到ElasticSearch
Elasticsearch Java API Client 开发
使用阿里云Elasticsearch体验信息检索加速