1. 程式人生 > >Elasticsearch(四)文件索引

Elasticsearch(四)文件索引

文件索引

1. 建立索引
PUT /users
{
  "settings": {
    "index": {
      "number_of_shards": 5,
      "number_of_replicas": 1
    }
  }
}
2. 修改索引

索引的主分片數在索引建立之後就不能再修改,預設是5;副本分片是可以隨時修改的。

PUT /users/_settings
{
  "index": {
    "number_of_replicas": 2
  }
}
  • number_of_replicas: 設定索引的副本分片數
  • blocks.read_only: 如為true,則索引只能讀,不能寫和更新
  • blocks.read: 如為true,則禁止讀取操作
  • blocks.write: 如為true,則禁止寫操作
  • blocks.metadata: 如為true,則禁止對metadata操作
3. 檢視索引配置資訊
GET /users/_settings
# 檢視多個索引資訊
GET /users, roles/_settings
# 使用萬用字元檢視索引資訊
GET /use*/_settings
# 檢視所有索引資訊
GET /_all/_settings
4. 刪除索引
DELETE /users
5. 插入資料

向索引名為users的索引插入一條type為user的資料

# 由es自動生成id值
POST /users/user/ { "name": "Alan", "message": "create an example user", "created_at": "2018-11-05T11:00:00" } # 建立時指定id值 PUT /users/user/1 { "name": "Bourne", "message": "create an example user", "created_at": "2018-11-05T12:00:00" }
6. 使用映像mapping
# 通過mapping設定index中某個type下的field中的詳細資訊
PUT /test
{
  "mappings"
: { "example": { "properties": { "user": { "type": "text", "index": "false" } } } } } # 或者 PUT /test/example/_mapping { "example": { "properties": { "message": { "type": "text", "index": "false" } } } }

注意:es6.x以後移除了string型別,另外index的值只能時boolean了。

7. 獲取映像資訊
GET /test/_mapping/example
# 獲取特定field的資訊
GET /test/_mapping/example/field/user
8. 管理索引檔案
# 開啟
POST /users/_open
# 關閉
POST /users/_close
# 檢測狀態
HEAD /users
# 清除快取
POST /users/_cache/clear
9. 配置分析器
# 在索引users中基於standard分析器建立一個名為es_std的分析器
PUT /users/_settings
{
  "analysis": {
    "analyzer": {
      "es_std": {
        "type": "custom",
        "tokenizer": "standard"
      }
    }
  }
}

# 使用es_std進行分詞
GET /users/_analyze
{
  "analyzer": "es_std",
  "text": "joson bourne"
}
10. 獲取文件資訊
GET /users/user/1
# source過濾器
GET /users/user/1?_source=false
# 獲取特定欄位的值
GET /users/user/1?_source=name
11. 刪除文件資訊
DELETE /users/user/1
12. 更新文件資訊
# 第一種
POST /users/user/1/_update
{
  "doc": {
   "message": "bourne" 
  }
}
# 第二種
POST /users/user/1/_update
{
  "script": "ctx._source.message = \"Bourne1\""
}

向陣列新增元素

POST /users/user/1/_update
{
  "script" : {
    "source": "ctx._source.tags.add(params.new_tag)",
    "params" : {
      "new_tag" : "world"
   }
  }
}

增加新欄位

POST /users/user/1/_update
{
  "script" : {
    "source": "ctx._source.new_field=params.new_field",
    "params" : {
      "new_field" : "world"
   }
  }
}

根據ID值找不到文件,則通過引數體中的upsert建立這個文件,並且加入新的欄位;否則更新欄位值。

POST /users/user/2/_update
{
  "script" : {
    "source": "ctx._source.count+=params.count",
    "params" : {
      "count" : 4
   }
  },
  "upsert": {
     "counter": 1
   }
}
13. 批量獲取文件

通過指定_index_type_id獲取不同索引不同型別的文件

POST /_mget
{
  "docs": [
    {
      "_index": "users",
      "_type": "user",
      "_id": "1"
    },
    {
      "_index": "roles",
      "_type": "role",
      "_id": "1"
    }
    ]
}

獲取同一索引同一型別下的文件,可以通過指定ids即可

POST /users/user/_mget
{
  "ids": ["1", "2"]
}