ES增删改查以及常用操作
es增删改查以及常用操作
·
说明:在工作中使用ES已经有段时间,这儿把平时常用的一些操作总结记录下来。
客户端工具:kibana
1.创建索引
dynamic:true 字段可以动态创建,更新数据时可以保存索引中不存在的字段
dynamic:false 更新数据时,字段只能为索引现有字段
PUT /student-001
{
"mappings": {
"dynamic": "true",
"properties": {
"birthday": {
"type": "date",
"format": "yyyy-MM-dd HH:mm:ss||yyyy/MM/dd HH:mm:ss||strict_date_optional_time||epoch_millis"
},
"introduce": {
"type": "text"
},
"name": {
"type": "keyword"
},
"sex": {
"type": "keyword"
},
"stu_id": {
"type": "long"
}
}
}
}
2.别名相关
1)创建别名
POST _aliases
{
"actions": [
{
"add": {
"index": "student-001",
"alias": "student"
}
}
]
}
2)设置索引的is_write_index属性
场景 原来别名索引student 对应真实索引为student-001,但是后面因为业务需求,该索引相关字段类型发生了变化,这时按照新的需求建立了新的索引student-002,对应别名也是student ,此时我们不再需要向student-001写入数据,只向student-002写入数据。
POST /student-001/_aliases/student
{
"is_write_index":false
}
POST /student-002/_aliases/student
{
"is_write_index":true
}
3.插入数据
POST /student/_doc
{
"birthday":"1999-01-01",
"name":"小明",
"introduce":"xxxxxxxxxxxxxx....",
"sex":"男",
"stu_id":1
}
4.删除数据
删除数据有两种方式,可以根据数据自身id直接删除,也可以根据条件删除
1)根据_id删除
DELETE student/_doc/ieVaE4QBt9FqGj2fyOdD
2)根据条件删除
POST student/_delete_by_query
{
"query": {
"term": {
"name": "小明"
}
}
}
5.修改数据
修改数据可以根据id和条件来修改
1)根据_id修改
POST student/_update/OediE4QBt9FqGj2fw1I2
{
"doc": {
"sex":"女"
}
}
2)根据条件修改
POST student/_update_by_query
{
"query": {
"term": {
"name": "小明"
}
},
"script": {
"source": "ctx._source['sex'] = '男'"
}
}
6.查询
查询涉及到的知识比较多,有term,terms,match,match_phrase,wildcard等等,这儿简单的列举一种
1)精确查询
GET student/_search
{
"query": {
"term": {
"name": "小明"
}
}
}
2)聚合查询
这儿以name字段来分类统计
size:指定数量
GET student/_search
{
"aggs": {
"NAME": {
"terms": {
"field": "name",
"size": 10
}
}
}
}
3) 聚合查询-截取聚合字段指定长度值
通过截取name属性前5个字符长度来进行分类统计
GET student/_search
{
"aggs": {
"NAME": {
"terms": {
"field": "name",
"size": 10,
"script": "doc['name'].value.substring(0,5)"
}
}
}
}
4)排重查询
根据某一属性进行拍重查询
GET /student/_search
{
"collapse": {
"field": "name"
}
}
7.添加字段
添加一个int类型的班级id字段
PUT student/_mapping
{
"properties": {
"class_id": {
"type": "integer"
}
}
}
8.业务中遇到常用的settings相关设置
1)分类统计数量超长异常相关设置
异常:Trying to create too many buckets. Must be less than or equal to: [65535] but was [65536
PUT /_cluster/settings
{
"persistent": {
"search.max_buckets": 100000
}
}
2)设置索引缓存时间
业务中,进行更新数据操作后,会发现数据没有立即更新,这是因为es会将索引数据进行缓存,根据需求,可以自己设置缓存刷新时间
PUT student/_settings
{
"refresh_interval": "50ms"
}
未完待续…
更多推荐
已为社区贡献1条内容
所有评论(0)