elasticsearch基本操作一

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u013219624/article/details/84666712

1.索引操作

# 创建名为data索引 0备份 3分片
PUT data
{
  "settings": {
    "index": {
      "number_of_replicas": 0,
      "number_of_shards": 3
    }
  }
}

# 查询data索引配置
GET data/_settings

# 获取所有索引配置
GET _all/_settings

# 删除data索引
DELETE data

2.单文档增删改查操作

# 添加id为1的文档
PUT data/user/1
{
  "name": "tom",
  "age": 15,
  "hobby": ["fb", "google"] 
}

# 添加文档不指定ID
POST data/user
{
  "name": "Jack",
  "age": 25,
  "hobby": ["百度", "google"] 
}

# 查询ID为1的文档
GET data/user/1

# 查询ID为1的文档 指定列
GET data/user/1?_source=name,age

# 替换文档
PUT data/user/1
{
  "name": "Jack_new",
  "age": 35,
  "hobby": ["百度", "googl_new"]  
}

# 指定修改字段
POST data/user/1/_update
{
  "doc": {
    "age": 100
  }
}

#删除文档
DELETE data/user/1

3.Muti Get批量查询文档

GET data/user/_mget
{
  "docs": [
    {
      "_id": 2,
      "_source": ["age"]
    },
    {
      "_id": 2
    },
    {
      "_id": 3
    }
  ]
}

GET data/user/_mget
{
  "ids": [1, 2, 3, 4]
}

4.Bulk API批量增删改

格式
{action: {metadata}}
{requestBody}

action
	create: 文档已存在会报错
	index:文档替换
	update: 更新
	delete:删除

metadata
	_index
	 _type
	  _id
	  
# 批量添加
POST res/book/_bulk
{"index":{"_id":1}}
{"title":"java","price":10}
{"index":{"_id":2}}
{"title":"C++","price":20}
{"index":{"_id":3}}
{"title":"PHP","price":5}
{"index":{"_id":4}}
{"title":"Python","price":40}

# 批量操作
POST res/book/_bulk
{"delete":{"_id":1}}
{"create":{"_id":5}}
{"title":"js","price":100}
{"update":{"_id":2}}
{"doc": {"price": 1000}}

注意:Bulk API加载到内存中执行,建议文档数1000~5000,大小不要超过100M

5.版本控制(乐观锁机制)

# 内部版本控制 (version和es中的值相等及可更新)
PUT data/user/1?version=2
{
  "name": "version",
  "age": 15,
  "hobby": ["fb", "google"] 
}

# 外部版本控制 (version比es中的值大即可更新)
PUT data/user/1?version=10&version_type=external
{
  "name": "version",
  "age": 15,
  "hobby": ["fb", "google"] 
}

6.常用数据类型

字符型:text keyword (keyword不会分词)
数字类型:long integer short byte double float
日期类型:date
布尔类型:boolean
二进制型:binary
数组
对象类型
地理位置类型
IPv4类型

7.mapping

PUT custom
{
  "settings": {
    "number_of_replicas": 0,
    "number_of_shards": 1
  },
  "mappings": {
    "person": {
      "properties": {
        "title":{"type": "text"},
        "name":{"type": "text", "analyzer": "standard"},
        "birtyday":{"type": "date", "index": false},
        "money":{"type": "double"},
        "age":{"type": "integer"}
      }
    }
  }
}

GET custom/person/_mapping

猜你喜欢

转载自blog.csdn.net/u013219624/article/details/84666712