2014年4月16日 星期三

[elasticsearch/logstash] logstash id 自動產生 document id "_id" automatic id generation


使用 logstash 來收集 log 做 log management 時,
如果你使用 elastic search 做預設的 search engine (output 使用 elasticsearch )
應該會注意到有三個 "_" 開頭內部使用的metadata。


_id   _Eweo8-ySluo6awKTRssXw
_index  logstash-2013.04.16
_type   apache-access



Index Data


一般來說,使用 elasticsearch
我們使用PUT來索引一個json format 的record file
curl -XPUT 'http://localhost:9200/twitter/user/peicheng' -d '{ "name" : "Peicheng" }'
return
{"_index":"twitter","_type":"user","_id":"peicheng","_version":1,"created":true}
在使用 elasticsearch rest api 做 index 時,我們注意到了
twitter -> index name
user -> type
peicheng -> id (document id)
請注意這裡我們使用PUT的方式。

Query Data

$ curl -XGET 'http://tmdesk:9200/twitter/user/peicheng?pretty=true'
{
  "_index" : "twitter",
  "_type" : "user",
  "_id" : "peicheng",
  "_version" : 1,
  "found" : true, "_source" : { "name" : "peicheng" }
}
指定 要query 的 index , type ,跟 id。


而如果你想要讓 elasticsearch 自動產生id呢? (automatic id generation )


$ curl -XPOST 'http://tmdesk:9200/twitter/user' -d '{ "name" : "peicheng" }'
{"_index":"twitter","_type":"user",
"_id":"dF8MsloXRg-RIe_Bq3xxsw",
"_version":1,"created":true}
所以,你在logstash裡面要是沒有特別指定 document_id的構造方法,
elasticsearch就會幫你產生 _id。

沒有留言:

張貼留言