首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >elasticsearch updateByQuery语法如何工作

elasticsearch updateByQuery语法如何工作
EN

Stack Overflow用户
提问于 2022-03-07 20:20:30
回答 1查看 351关注 0票数 1

我和Elasticsearch一起工作了好几天了。当我创建一个CRUD时,我遇到了updateByQuery法。我正在使用nestjs,我更新字段的方式是:

代码语言:javascript
复制
await this.elasticSearch.updateByQuery(
            {
                index: 'my_index_user',
                body:{
                    query:{
                        match:{
                            name: 'user_name',
                        }
                    },
                    script: { 
                        inline : 'ctx._source.name = "new_user_name"'
                    }
                }
            }
        );

我的问题是:为什么elasticsearch需要这个语法'ctx._source.name = "new_user_name"'来指定字段名称的新值?这个上下文是什么ctx._source?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-03-08 01:12:11

正如在信源过滤官方文件中提到的,使用它,您可以在_source中获取字段值(发送给Elasticsearch的值,这个值是按原样存储的,不需要经过分析过程)。

让我们以一个应用了text分析器(默认)的standard字段为例,在这个字段中存储foo bar的值,Elasticsearch在分析过程中破坏字段的值,foobar两个标记存储在Elasticsearch的倒排索引中,但是如果您想查看原始值(即foo bar ),您可以检查_source并得到它。

因此,最好将原始值(没有分析过程)放在_source中,因此使用这个API,您将在那里更新字段值。当您希望稍后将索引重新索引到新索引或更改其分析方式时,也会有所帮助,因为您在_source中有原始值。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71386820

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档