로그스태시 fingerprint 필터를 사용할 때 MURMUR3 해시 함수를 선택하면 숫자 해시값을 구할 수 있다.
input { file { path => "D:/test.log" start_position => "beginning" sincedb_path => "nul" }}
filter { fingerprint { method => "MURMUR3" }}
output { stdout {}}
[2022-09-04T13:50:20,120][INFO ][logstash.agent ] Pipelines running {:count=>1, :running_pipelines=>[:main], :non_running_pipelines=>[]}{ "log" => { "file" => { "path" => "D:/test.log" } }, "@version" => "1", "host" => { "name" => "MHKANG" }, "@timestamp" => 2022-09-04T04:50:20.145096200Z, "message" => "abc\r", "event" => { "hash" => 962264649, "original" => "abc\r" }}
인제스트 노드의 fingerprint 프로세서도 이름이 비슷한 MurmurHash3 해시 함수를 지원한다. 당연히 결과가 같을 거라 생각함.
POST _ingest/pipeline/_simulate{ "pipeline": { "processors": [ { "fingerprint": { "fields": ["message"], "method": "MurmurHash3" } } ] }, "docs": [ { "_source": { "message": "abc" } } ]}
{ "docs": [ { "doc": { "_index": "_index", "_id": "_id", "_version": "-3", "_source": { "message": "abc", "fingerprint": "fLPgJ47SvqixVKJpLWJP8Q==" }, "_ingest": { "timestamp": "2022-09-04T04:51:43.3429747Z" } } } ]}
아 속았네.
22.12.09
POST _ingest/pipeline/_simulate{ "pipeline": { "processors": [ { "script": { "lang": "painless", "source": """ def str = ctx['message']; ctx['hash_num'] = str.hashCode(); """ } } ] }, "docs": [ { "_source": { "message": "abc" } } ]}
{ "docs": [ { "doc": { "_index": "_index", "_id": "_id", "_version": "-3", "_source": { "message": "abc", "hash_num": 96354 }, "_ingest": { "timestamp": "2022-12-09T08:38:37.0623524Z" } } } ]}
이게 맞나?
관련 글
댓글 없음:
댓글 쓰기