【问题标题】:Partially Update Nested Records in ElasticSearch Index部分更新 ElasticSearch 索引中的嵌套记录
【发布时间】:2019-09-24 09:44:51
【问题描述】:

我在我的项目中使用 ElasticSearch 2.x 和 Nest 2。

我面临一个需要更新嵌套记录的问题,但 Elasticsearch 不这样做,而是删除记录并重新索引它们。

因此,由于这种情况,我需要始终将所有嵌套记录与更新的记录一起发送以更新嵌套记录。

那么你们中有人对此有解决方案吗?我可以只更新记录而不重新索引所有记录吗?

提前感谢您的帮助..!!

【问题讨论】:

  • 谢谢@RussCam ,它就像魔术一样工作......被困在这上面安静了一段时间,你为我节省了很多时间......再次非常感谢...... :)
  • 乐于助人。随意赞成这个答案:)
  • 还要考虑一下全新的UpdateByQuery - ES 的特性,它通常有助于节省大量代码:elastic.co/guide/en/elasticsearch/reference/current/…
  • @core UpdateByQuery 仍然受与更新 API 一样的更新嵌套文档的约束;它只允许您一次调用更新许多文档

标签: elasticsearch nest


【解决方案1】:

试试这个, 它对我有用

POST /yourindex/type/_id/_update
{
    "script" : {
        "inline" :  "if (ctx._source.yourarray == null || ctx._source.yourarray.size() == 0){ ctx._source.yourarray = params.uuuser}  else {ctx._source.yourarray.add(params.newarray[0]) } ", 
        "params" : {
            "newarray" :[ 
               {"c1":"dfgfgsdf",
                 "c2":"can2",
                 "ce":" can2@can.co",
                 "cp":475522778,
                 "d1":[
                       {
                         "e1":"fffff",
                         "ffff":[{"g1":"hhhhh"},{"g2":"iiiiii"}]
                       }
                   ] 
               }
            ]
        }
    }
}

【讨论】:

    猜你喜欢
    • 2015-11-14
    • 2019-04-06
    • 1970-01-01
    • 1970-01-01
    • 2014-04-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-09
    • 2017-09-07
    相关资源
    最近更新 更多