👏作者简介:大家好,我是Rockey,不知名企业的不知名Java开发工程师
🔥如果感觉博主的文章还不错的话,请👍三连支持👍一下博主哦
📝联系方式:he18339193956,加我进群,大家一起学习,一起读书,一起对抗互联网寒冬👀
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站 点击跳转浏览。
ES中更新某一个字段,以及添加某一个字段
第一种:放在doc 对象中
_update
POST /index_name/type/id/_update
{
"doc": {
"column": "column_value"
}
}
示例:
POST /xxx_company/info/8fe6e9b2a9330862/_update
{
"doc": {
"eps": {
"value": 0,
"value_usd": 0
}
}
}
_update_by_query
查询之后,通过脚本进行更新处理
POST index_name/_update_by_query
{
"query": {
"match": {
"条件": "8fe6e9b2a9330862"
}
},
"script": {
"source": "ctx._source['column'] = params['one']",
"params": {
"one": "修改后的值"
}
}
}
示例:
POST xxxx_company/_update_by_query
{
"query": {
"match": {
"_id": "8fe6e9b2a9330862"
}
},
"script": {
"source": "ctx._source['eps'] = params['one']",
"params": {
"one": {
"value": 1.0,
"value_usd": 1.1
}
}
}
}
第二种:下面是通过脚本进行更新操作
PUT test/type1/1
{
"counter" : 1,
"tags" : ["red"]
}
执行以下操作
POST test/type1/1/_update
{
"script" : {
"source": "ctx._source.counter += params.count",
"lang": "painless",
"params" : {
"count" : 4
}
}
}
查看一下结果
{
"_index": "test",
"_type": "type1",
"_id": "1",
"_version": 3,
"found": true,
"_source": {
"counter": 5,
"tags": [
"red"
]
}
}
执行二
POST test/type1/1/_update
{
"script" : {
"source": "ctx._source.tags.add(params.tag)",
"lang": "painless",
"params" : {
"tag" : "blue"
}
}
}
查看结果
{
"_index": "test",
"_type": "type1",
"_id": "1",
"_version": 2,
"found": true,
"_source": {
"counter": 1,
"tags": [
"red",
"blue"
]
}
}
除_source外,通过ctx映射还可以使用以下变量:_index,_type,_id,_version,_routing,_parent和_now(当前时间戳)。
还可以在文档中添加一个新字段
POST test/type1/1/_update
{
"script" : "ctx._source.new_field = 'value_of_new_field'"
}
结果如下:
{
"_index": "test",
"_type": "type1",
"_id": "1",
"_version": 4,
"found": true,
"_source": {
"counter": 5,
"tags": [
"red",
"blue"
],
"new_field": "value_of_new_field"
}
}
ES中删除某个字段
POST test/type1/1/_update
{
"script" : "ctx._source.remove('new_field')"
}
查看一下数据
{
"_index": "test",
"_type": "type1",
"_id": "1",
"_version": 5,
"found": true,
"_source": {
"counter": 5,
"tags": [
"red",
"blue"
]
}
}
而且,我们甚至可以改变执行的操作: 如果标签字段包含蓝色,则此示例将删除该文档,否则它将不执行任何操作(noop)
POST test/type1/1/_update
{
"script" : {
"source": "if (ctx._source.tags.contains(params.tag)) { ctx.op = 'delete' } else { ctx.op = 'none' }",
"lang": "painless",
"params" : {
"tag" : "blue"
}
}
}
查看一下数据
{
"_index": "test",
"_type": "type1",
"_id": "1",
"found": false
}
结语
🔥一个人可以掌握知识,但只有与他人交流才能形成智慧。
🔥One person can acquire knowledge, but wisdom is formed only in the exchange with others.
📝 欢迎大家关注博主公众号 Rockey小何同学 添加博主微信:he18339193956进群,一起学习,一起成长,一起提高认知。
🏆 我坚信人与人之间的差距是表面上是财富的差距,本质上是大脑中认知的差距,文章来源:https://www.toymoban.com/news/detail-507285.html
我们下期再见。文章来源地址https://www.toymoban.com/news/detail-507285.html
到了这里,关于ES中更新字段和删除字段的操作的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!