Elasticsearch(四)文件索引
阿新 • • 發佈:2018-12-21
文件索引
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"]
}