1. 程式人生 > >elasticsearch建立索引操作的API

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