Elasticsearch:嵌套对象的批量更新

2023-12-26

我的文档结构如下:

{
    "documentID": 123,
    "originalFilename": "Build a Better Post.pdf",
    "modDate": "2017-11-16T18:22:54.48",
    "documentType": "pdf",
    "keySystem": "web",
    "title": "Build a Better Post",
    "createPreview": false,
    "uploadedBy": "DA5208B3-2198-44C6-8256-0AEBC4DD1588",
    "streamItemData": {
        "itemID": 800,
        "author": {
            "employeeID": 9,
            "authorName": {
                "firstName": "Joseph",
                "preferredName": "Joe",
                "lastName": "Smith"
            },
            "title": "manager"
        }
    }
}

我的elasticsearch 中有大约数百万个文档。一author对象可以存在于数千个文档中,基本上存在一对多的关系。

每当嵌套对象author已更新,说标题已更新我想更新包含此内容的所有文档author这可能是数百万份文档。有没有任何弹性搜索查询可以实现这一点。我知道应该有一个批量更新过程来处理这个问题,但是有什么方法可以让我不必查询包含该对象的所有文档,然后一一更新它们。


The _update_by_query终点 https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-update-by-query.html这就是您正在寻找的。

下面的命令将识别作者的所有文档employeeID: 9(你可以有任何你想要的条件),然后它将取代author脚本参数中的字段:

POST your-index/_update_by_query?wait_for_completion=false&slices=auto&conflicts=proceed
{
  "script": {
    "source": "ctx._source.streamItemData.author.putAll(params)",
    "lang": "painless",
    "params": {
        "authorName": {
            "firstName": "Joseph",
            "preferredName": "Joe",
            "lastName": "Smith"
        },
        "title": "manager"
    }
  },
  "query": {
    "term": {
      "streamItemData.author.employeeID": "9"
    }
  }
}

由于您可能愿意更新数百万个文档,因此我添加了wait_for_completion=false到 URL,以便更新异步运行。您可以在任务运行时使用以下命令检查任务任务管理API https://www.elastic.co/guide/en/elasticsearch/reference/current/tasks.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Elasticsearch:嵌套对象的批量更新 的相关文章

  • ElasticSearch 嵌套查询 - 排除父文档

    尝试排除其中子文档之一与查询不匹配的顶级文档 对于下面的示例 我尝试排除其嵌套作业之一具有的所有文档current true 并与company name Elastic 但由于嵌套作业文档之一与current false和公司name E
  • C# Elasticsearch NEST 无法转换 lambda 表达式

    我遇到了与此处描述的完全相同的问题 但未得到解答 ElasticSearch NEST 搜索 https stackoverflow com questions 24615676 elasticsearch nest search I us
  • Elasticsearch 单个字段的多个分析器

    我使用严格的预定义映射将不同类型的文档存储在单个索引中 它们都有一些字段 例如 body 但我希望在索引时对它们进行稍微不同的分析 例如 对特定文档使用不同的标记过滤器 并在搜索时以相同的方式处理 据我所知 分析器不能按文档指定 我还考虑使
  • ElasticSearch - 仅获取与搜索响应中所有顶级字段匹配的嵌套对象

    假设我有以下文档 id 1 name xyz users name abc surname def name xyz surname wef name defg surname pqr 我只想获取与搜索响应中的所有顶级字段匹配的嵌套对象 我
  • ElasticCloud 的 ElasticSearch 身份验证错误?

    我刚刚在 ElasticCloud 上设置了一个新的 ElasticSearch 集群 我正在尝试遵循帮助文档 https cloud elastic co help 它说您可以按如下方式发布文档 curl https
  • 我们可以同时使用拼音标记和同义词吗?

    我正在尝试同时启用语音分析器和同义词 这似乎不起作用 它们一起使用有错吗 在下面的实现中 我希望使用同义词转换搜索查询 然后使用语音分析器来检索结果 但我的同义词在这里完全被忽略了 如果我在创建索引时删除语音分析器 那么同义词就可以正常工作
  • 如何使用ElasticSearch来实现社交搜索?

    我正在尝试使用 ElasticSearch 创建具有社交功能的商业搜索 我有一个企业目录 用户可以通过不同的方式与这些企业进行交互 通过查看它们 检查它们等 当用户搜索商家时 我希望能够在结果顶部向他们显示他们的朋友与之互动过的商家 或根据
  • 如何增加vm.max_map_count?

    我正在尝试在 Ubuntu EC2 计算机 t2 medium 中运行弹性搜索 但我收到消息 最大虚拟内存区域 vm max map count 65530 太低 至少增加到 262144 我怎样才能增加vm max map count v
  • Elasticsearch 通过 id 获取不起作用但文档存在

    我在 elasticsearch 1 2 0 最近从 1 0 1 升级 上看到 ids 的奇怪行为 搜索检索我的文档 显示 id 的正确值 终端 curl myServer 9200 global search q someField so
  • Elasticsearch 跨多个索引搜索 - 忽略不存在的索引

    我有弹性集群 其中我的索引包含当前日期 例如 example idex 2016 07 26 gt exists example idex 2016 07 25 gt exists example idex 2016 07 24 gt do
  • 聚合多个递归logstash

    我正在使用带有输入 jdbc 的 Logstash 并且希望通过聚合将一个对象嵌入到另一个对象中 如何使用添加递归 即在另一个对象中添加一个对象 这是一个例子 index my index type test id 1 version 1
  • Facet从elasticsearch中的对象获取所有键

    假设我有以下文档 title Some Title options key5 1 key3 0 key1 1 title Some Title options key2 0 key3 0 key5 1 我想从中获取所有钥匙options使用
  • 在 ElasticSearch 中,我应该对单独但相关的实体使用多个索引吗?

    添加索引的开销有详细记录 但我无法找到有关何时针对要建立索引的各种文档类型使用多个索引的良好信息 这是一个说明问题的通用示例 假设我们有以下实体 产品 名称 产品 ID 产品类别 ID 商店列表 产品类别 名称 ProductCategor
  • 如何将监听休眠事件的模块与实体本身解耦?

    我有一个由 spring jpa hibernate 驱动的分层 Web 应用程序 现在我正在尝试集成 elasticsearch 搜索引擎 我想要做的是捕获所有 postInsert postUpdate 事件并将这些实体发送到 elas
  • 脚本参数不支持 ElasticSearch v7.3 更新脚本中的 START_ARRAY 类型的值

    我正在尝试更新索引文档 但通过 Postman 更新 API 脚本时出现以下错误 error root cause type x content parse exception reason 5 15 script params doesn
  • 如何修改 Elasticsearch 文档的 _source 字段

    问题 有没有办法从文档的 source 中清除 html html 的剥离可以是周期性的 触发的 或者理想情况下是在索引时即时进行的 我将数据输入到elasticsearch中 并针对分析器进行索引 该分析器在索引之前剥离不需要的htmls
  • 使用 python 聚合 elasticsearch-dsl 中的字段

    有人可以告诉我如何编写 Python 语句来聚合 求和和计数 有关我的文档的内容吗 SCRIPT from datetime import datetime from elasticsearch dsl import DocType Str
  • query_string 和 multi_match 有什么区别?

    运行此查询时 query string query text fields field1 field2 multi match query text fields field1 field2 有什么不同 何时使用其中之一 何时使用另一个 q
  • Elasticsearch GET API 获取分片大小

    在 Elasticsearch 2 3 3 中 有没有办法使用返回 JSON 的 GET API 获取分片大小 目前我找到了以下几种获取shard size的方法 这两种方法都存在问题 recovery gt 使用 JSON 进行响应并提供
  • Elasticsearch 文档的最大大小是多少?

    我读到有关 Lucene 仅限于 2Gb 文档的注释 对于可在 Elasticsearch 中建立索引的文档大小是否有其他限制 Lucene 内部使用字节缓冲区 该缓冲区使用 32 位整数进行寻址 根据定义 这限制了文档的大小 所以理论上2

随机推荐

  • 写入开始后无法设置此属性!在 C# WebRequest 对象上

    我想重用 WebRequest 对象 以便保存 cookie 和会话以供以后向服务器请求 下面是我的代码 如果我第二次使用 Post 函数两次 request ContentLength byteArray Length 它会抛出异常 写入
  • 分叉的 IORef 读取器函数似乎会停止主线程

    我正在对并发性和内存可见性进行一些实验 并遇到了这种奇怪的行为 请参阅内联评论 module Main where import Data IORef import Control Concurrent import System CPUT
  • 在 PyQt 中打开第二个窗口

    我正在尝试使用 pyqt 在单击 QMainWindow 上的按钮时显示自定义 QDialog 窗口 我不断收到以下错误 python main py DEBUG Launch edit window Traceback most rece
  • 在 R 中使用 phantomJS 抓取具有动态加载内容的页面

    背景我目前正在使用 rvest 从 R 的一些网站上抓取产品信息 这适用于除一个网站之外的所有网站 其中内容似乎是通过 angularJS 动态加载的 因此无法迭代加载 例如通过 URL 参数 就像我对其他网站所做的那样 具体网址如下 ht
  • Zend Framework - 如何将 url 重写为 seo 友好的 url

    我得到了 Zend Framework 的网站 我在 Zend 中完全是菜鸟 例如我想制作一个网址 somewebsite com test about 看起来像这样 somewebsite com for fun link 我如何在 Ze
  • 无法找到“Firebase”的规范

    我在尝试时无法安装 Firebase pod pod install Analyzing dependencies Unable to find a specification for Firebase 这是我的 Podfile platf
  • 导入 javax.servlet 仍然无法解析[重复]

    这个问题在这里已经有答案了 这是我的 Eclipse 范围的 JRE 定义 清楚地显示已添加 servlet api jar 这里有同样的旧导入错误 似乎永远无法解决 Java不是很棒吗 有人有可能对为什么这仍然不起作用有一个简单 事实的答
  • NestJS EntityMetadataNotFoundError:找不到“存储库”的元数据

    我知道有很多关于这个主题的帖子 我真的很难理解我到底想做什么来解决这个问题 使用 Postman 当我尝试命中路线时 出现以下错误 ERROR ExceptionsHandler No metadata for OrganizationsR
  • 如何从插件中的 PartyList 获取联系人指南?

    我正在制作一个插件 该插件会在自定义活动短信的创建消息上触发 这些插件将使用第三方短信服务提供商发送实际短信 因此 我需要获取短信活动 收件人 字段中每个联系人的手机号码 这是一个类型为 PartyList 的字段 我目前正在使用以下代码
  • 如何将键值对插入 Hive 映射?

    基于以下tutorial https cwiki apache org confluence display Hive Tutorial Hive有map类型 但是 似乎没有记录的方法可以通过SELECT带有一些 UDF 或内置函数 这可能
  • GTK# 和 Windows 窗体有什么区别?

    GTK 和 Windows 窗体有什么区别 他们完全不同吗 Thanks Gtk http mono project com GtkSharp GTK 是 Gtk 工具包的 NET 绑定 该工具包采用 C 语言编写 以提高速度和兼容性 而
  • 空堆区域的开销

    我的工具是 Linux gcc 和 pthreads 当我的程序从多个线程调用 new delete 时 并且存在堆争用时 会创建 arena 请参阅 以下链接以供参考 http www bozemanpass com info linux
  • Python循环查询MySQL - 查询结果未更新?

    我有一小段查询 mySQL 的 python 代码 while True print running SQL query cursor execute select from sites where stage NEW results cu
  • 当JProgressBar达到100%时如何使JDialog不可见?

    相关代码段 JProgressBar progress JButton button JDialog dialog Fields of my GUI class progress new JProgressBar JProgressBar
  • 将向量列表转换为数据框

    我正在尝试将向量列表 本质上是多维数组 转换为数据框 但每次尝试都会得到意想不到的结果 我的目标是实例化一个空白列表 用包含有关该循环迭代的信息的向量将其填充到 for 循环中 然后在完成后将其转换为数据帧 gt vectorList lt
  • Android画布路径实时表现

    我想在 15 分钟内绘制 4 或 5 个 实时图表 可视化大量数据 每 30 毫秒一个新值 我正在使用 Path 但当我想要显示超过 20000 个值并平移画布时 它似乎工作得非常慢 并且每秒都变得更糟 我也尝试过使用drawLine 但它
  • “Impact”字体在移动 Chrome 上不起作用

    我已经与 Impact 字体斗争了大约一年了 它应该是一种网络安全字体 但事实并非如此 当我使用标准 Impact 时 它无法在移动平台上运行 如果我使用特定的字体 font face 则不可能在 PC 和 Mac 上获得相同的渲染效果 我
  • 无法迭代二维数组来标准化数据

    我正在尝试标准化我的数据 并且需要迭代训练和测试集 我尝试了不同的方法 但出现此错误list indices must be integers or slices not list 我试过把range and len 但我仍然遇到同样的错误
  • 接口类纯虚信号的连接

    我想连接从接口类派生的某些对象的信号 连接完成于QWidget listenToAnimal AnimalInterface 这不起作用 因为qt metacall is not a member of AnimalInterface an
  • Elasticsearch:嵌套对象的批量更新

    我的文档结构如下 documentID 123 originalFilename Build a Better Post pdf modDate 2017 11 16T18 22 54 48 documentType pdf keySyst