您的位置:首页 > 大数据 > 人工智能

ElasticSearch 更新数据

2018-03-06 00:00 141 查看

1. 创建测试索引

PUT test
{
"mappings": {
"test1": {
"properties": {
"num1": {
"type": "integer"
},
"num2": {
"type": "integer"
},
"num3": {
"type": "nested",
"properties": {
"num31": {
"type": "integer"
},
"num32": {
"type": "integer"
}
}
}
}
}
}
}

2. 添加测试数据

PUT test/test1/1
{
"num1": 11,
"num2": 12,
"num3": [
{
"num31": 131,
"num32": 132
},
{
"num31": 133,
"num32": 134
}
]
}

PUT test/test1/2
{
"num1": 21,
"num2": 12,
"num3": [
{
"num31": 231,
"num32": 232
},
{
"num31": 233,
"num32": 234
}
]
}

3. 查看数据

GET test/test1/_search

4. 根据id更新数据

POST test/test1/1/_update
{
"doc": {
"num1": 10
}
}

5. 使用 update_by_query 更新数据

POST test/test1/_update_by_query
{
"script": {
"lang": "painless",
"source": "ctx._source.num1=111;ctx._source.num2=222"
},
"query": {
"bool": {
"must": [
{
"term": {
"num2": {
"value": "12"
}
}
}
]
}
}
}

6. 使用 update_by_query 为 nested 类型追加单条数据

POST test/test1/_update_by_query
{
"script": {
"lang": "painless",
"source": "ctx._source.num3.add(params.new_data)",
"params": {
"new_data": {
"num31":1111,
"num32":2222
}
}
},
"query": {
"bool": {
"must": [
{
"term": {
"num2": {
"value": "22"
}
}
}
]
}
}
}

7. 使用 update_by_query 为 nested 类型追加多条数据

POST test/test1/_update_by_query
{
"script": {
"lang": "painless",
"source": "ctx._source.num3.addAll(params.new_datas)",
"params": {
"new_datas": [
{
"num31":1111,
"num32":2222
},
{
"num31":3333,
"num32":4444
},
{
"num31":5555,
"num32":6666
}
]
}
},
"query": {
"bool": {
"must": [
{
"term": {
"num2": {
"value": "12"
}
}
}
]
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息