json - ElasticSearch嵌套数组部分更新

标签 json search plugins elasticsearch

我有一个包含my_array的特定对象:

"description": "My Object Description",
"my_array": [
  {
    "id": 1000,
    "name": "abc",
    "url" : "abc.html",
    "content": "somebig content"
  },
  {
    "id": 1001,
    "name": "def",
    "url" : "def.html",
    "content": "somebig content"
  },
  {
    "id": 1002,
    "name": "xyz",
     "url" : "xyz.html",
     "content": "somebig content"
  } ]

数组中的每个元素都包含一个网址。现在,只要此对象发生更改,我都会执行一个任务,该任务将命中数组中每个元素的url,获取该元素的html内容,并创建可以索引到elasticsearch中的请求文档。

可以说,无法访问id = 1001的url,并且无法访问该元素的内容。我仍然想继续处理元素1000和1002的更改。在这种情况下,我的更新将如下所示:
  "description": "My New Object Description",
    "my_array": [
      {
        "id": 1000,
        "name": "abc",
        "url" : "abc-new-url.html",
        "content": "some modified content"
      },
      {
        "id": 1002,
        "name": "xyz",
         "url" : "xyz-new-url.html",
         "content": "some modified content"
      } ]

如果我将此部分更新发送给elasticsearch,则该集合将得到更新,但元素1001已从该集合中删除。

我的问题是如何在不触摸1001的情况下选择性地更新元素1000和1002。这里的索引用1001过时对我来说还可以。一个显而易见的选择是从elasticsearch中获取现有文档,并在进行更新之前手动进行合并。还有其他方法可以执行此部分更新吗?

另一个问题是,有什么方法可以只将URL发送到elasticsearch,并编写一个插件来在索引时获取html内容,而不是事先做呢?

最佳答案

我认为您可以在更新查询中使用脚本解决此问题,请在此处查看以下答案:
remove objects from array elastic search

关于json - ElasticSearch嵌套数组部分更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32130297/

相关文章:

Javascript 迭代本地存储 JSON 对象 (Vanilla Javascript)

javascript - 将 JSON 字符串解析为数组

iOS实时搜索支持

swift - DispatchQueue 不会快速更新数据

java - 识别给定文本字符串中所有类型的重复

plugins - Gruntjs:如何执行复制任务以仅复制监视中的更改文件

javascript - 将整个 redux 状态作为单独的 JSON 文件获取

javascript - AngularJS 不更新 View

javascript - CodeMirror 自定义 showHint() 调用不起作用

plugins - Moodle 插件 ' missing from disk error'