elasticsearch建立索引操作的API
ElasticSearch-API-Index
索引建立API允許初始化一個索引。ElasticSearch對多重索引提供了支援,包括跨多個索引執行操作。每個索引在建立時可以讓一個特定的設定項與其關聯。
-
最簡單的方式建立索引
curl -XPUT ‘http://localhost:9200/twitter/'
-
在建立索引的時候指定分片和副本數量,引數格式採用YAML格式
curl -XPUT ‘http://localhost:9200/twitter/‘ -d ‘ index: number_of_shards:3 number_of_replicas:2 ‘
-
在建立索引的時候指定分片和副本數量引數,引數格式採用JSON格式
curl -XPUT ‘http://localhost:9200/twitter/‘ -d ‘{ “settings”:{ “index”:{ “number_of_shards”:3, “number_of_replicas”:2 } } }’
或者簡化為
curl -XPUT ‘http://localhost:9200/twitter’ -d ‘{ “settings”:{ “number_of_shards”:3, “number_of_replicas”:2 } }’
*請注意,你不需要在settings項中顯示的指定index。
-
索引建立API可以接受一個或者一組對映選項
curl -XPOST localhost:9200/test -d ‘{ “settings”:{ “number_of_shards”:1 }, “mappings”:{ “type1”:{ “_source”:{“enabled”:false}, “preperties”:{ “field1”:{“type”:”string”, ”index”:”not_analyzed” } } } } }’
-
REST風格的插入方式。
curl -XPOST http://localhost:9200/索引名稱/索引型別/id -d JSON格式的引數
比如插入”twitter”的索引,並且索引型別為tweet
curl -XPUT ‘http://localhost:9200/twitter/tweet/1’ -d ‘{ “user”:”kimchy”, “post_date”:”2012-12-12”, “message”:”trying out ElasticSearch!” }’
新增成功後,其會返回操作狀態,索引、型別、id等資訊如上例中返回資訊
{ "ok" : true, "_index" : "twitter", "_type" : "tweet", "_id" : "1" }
-
每一個被索引的文件都會有一個版本號,被關聯的版本號會作為index API的請求的響應資訊一部分返回回來。因此,我們可以在對索引操作的時候,指定特定的版本號,操作對應版本的文件。例如
curl -XPUT ‘localhost:9200/twitter/tweet/1?version=2’ -d ‘{ “message”:”elasticsearch now has versioning support,double cool!” }’
*注意 1.版本控制完全是實時的,不會影響接近實時方面的查詢操作。如果版本已經被提供了,那麼操作執行檢查所有的版本。 2.預設情況下,版本從1開始,自增因子為1。
-
op_type。索引操作也接受引數op_type,用來強制建立索引的操作。如果索引尚未建立的時候,可以接受這樣的行為,但是當文件的縮影已經存在的時候,該操作會將失敗。 下面是一個op_type引數的例子
curl -XPUT ‘http://localhost:9200/twitter/tweet/1?op_type=create’ -d ‘{ “user”:”kimchy”, “post_date”:”2014-12-05T14:12:12”, “message”:”trying out Elastic Searche” }’
另外的一種create方式
curl -XPUT ‘http://localhost:9200/twitter/tweet/1/_create’ -d ‘{ “user”:”kimchy”, “post_date”:”2009-11-11T14:12:12”, “message”:”hello,world” }’
-
自動生成Id.在建立一個Index的操作中,如果沒有指定id,系統將會自動地為其生成一個id.
curl -XPOST ‘http://localhost:9200/twitter/tweet/‘ -d ‘{ “user”:”kimchy”, “post_date”:”2013-11-12T12:12:12”, “message”:”Hello,world” }’
操作響應的結果如下
{ “ok”:true, “_index”:”twitter”, “_type”:”tweet”, “_id”:”6a8ca01c-7896-48e9-81cc-9f70661fcb32” }
-
路由(Routing)。預設情況下,分片或路由是通過計算文件的hash值來控制的,為了更明確的控制值,送入路由器使用hash函式計算hash值的操作可以通過routing引數來控制。
curl -XPOST ‘http://localhost:9200/twitter/tweet?routing=kimchy’ -d ‘{ “user”:”kimchy”, “post_date”:”2014-12-12T12:12:12” }’
-
TTL。一個文件建立索引的時候,能夠為其指定ttl。
curl -XPUT 'http://localhost:9200/twitter/tweet/1?ttl=86400000' -d '{ "user": "kimchy", "message": "Trying out elasticsearch, so far so good?" }'
curl -XPUT 'http://localhost:9200/twitter/tweet/1?ttl=1d' -d '{ "user": "kimchy", "message": "Trying out elasticsearch, so far so good?" }'
curl -XPUT 'http://localhost:9200/twitter/tweet/1' -d '{ "_ttl": "1d", "user": "kimchy", "message": "Trying out elasticsearch, so far so good?" }'
-
想要關注更多不同的,可以在建立索引時設定索引級選項,請看index modules。
原文連結:https://my.oschina.net/u/1246838/blog/353089