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:嵌套对象的批量更新 的相关文章

随机推荐

  • 写入开始后无法设置此属性!在 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