php - Elasticsearch:使用无痛脚本获取对象索引

标签 php elasticsearch elasticsearch-painless

我有一个嵌套类型,我需要获取特定对象的索引才能执行更新:

{
  "_index": "asset_en_v1",
  "_type": "note",
  "_id": "23217",
  "_version": 24,
  "found": true,
  "_source": {
    "user_id": "11",
    "title": "Title",
    "note": "Note.",
    "creation": "2017-05-31T21:36:01",
    "modification": "2017-05-31T21:36:01",
    "links": [
      {
        "note_link_id": "7310",
        "user_id": "11",
        "creation": "2017-06-01T14:41:50",
        "modification": "2019-06-01T14:42:00",
        "comment": "Comment goes here."
      },
      {
        "note_link_id": "7311",
        "user_id": "11",
        "creation": "2017-06-01T14:42:42",
        "modification": "2019-06-01T14:42:00",
        "comment": "Yep..."
      },
      {
        "note_link_id": "7312",
        "user_id": "11",
        "creation": "2017-06-01T15:33:55",
        "modification": "2017-06-01T15:34:00",
        "comment": "Jumo."
      }
    ]
  }
}

到目前为止,我已经在Painless脚本中创建了一个_update语句,几乎可以完成这项工作,但是我一直在努力寻找匹配项:
{
    "script": {
        "lang": "painless",
        "inline": "def note_link_id = 7311; def links = ctx._source.links; for (int i = 0; i < links.length; ++i) { if (links[i].note_link_id == note_link_id) { ctx._source.links[note_link_id].comment = params.comment; ctx._source.links[note_link_id].modification = params.modification } }",
        "params": {
            "modification": "2019-06-01T14:42:00",
            "comment": "QWERTY!"
        }
    }
}

在这里,links[i].note_link_id == note_link_id不匹配。

有任何想法吗?

最佳答案

在您的内联脚本中,它应该是i ++,而不是++ i

def note_link_id = 7311; 
def links = ctx._source.links; 
for (int i = 0; i < links.length; i++) //Note i++, instead of ++i
{ 
    if (links[i].note_link_id == note_link_id) 
    { 
        ctx._source.links[note_link_id].comment = params.comment;
        ctx._source.links[note_link_id].modification = params.modification 
    } 
}

关于php - Elasticsearch:使用无痛脚本获取对象索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44331432/

相关文章:

javascript - 通过 Php 通过 ajax 从 MSSQL 服务器获取数据

Javascript 不等待使用 bootstrap-wizard.js 的 ajax

php - 如何访问 Twig 模板中的 JSON 数据?

php - 在提交表单时将 Javascript 变量传递给 PHP

java - 我可以使用哪个函数代替 elasticsearch 2.1 中的 ImmutableSettings.settingsBuilder()

search - 如何在Elasticsearch中对朝鲜语单词使用前缀查询?

elasticsearch - 当存储桶路径之一解析为 'bucket_script'时,ElasticSearch 'null'不执行

Elasticsearch 无痛脚本不使用 if 条件替换嵌套对象字段值

elasticsearch - 在 bool 查询中合并两个范围过滤器

elasticsearch-painless - 操纵日期