当前位置: 首页 > 面试题库 >

将元素追加到Eslasticsearch字段

梁丘琛
2023-03-14
问题内容

如果类型不匹配,可以将一些元素追加到elasticsearch字段吗?如果我有这样的文件:

{
"counter" : 1,
"tags" : "red"
}

而且我想像这样附加另一个标签字段“蓝色”:

{
"script" : {
    "source": "ctx._source.counter += params.newTag",
    "lang": "painless",
    "params" : {
        "newTag" : "blue"
    }
}
}

我想要的结果类似于:

{
"counter" : 1,
"tags" : ["red", "blue"]
 }

我知道这个:

"source": "ctx._source.counter += params.newTag"

用于将字符串追加到另一个字符串

还有这个:

"source": "ctx._source.counter.add(params.newTag)"

用于将另一个元素追加到列表。那么有什么办法可以将另一个元素附加到字符串字段呢?谢谢您的任何建议。


问题答案:

您可以做的是添加针对tags字段类型的测试,然后将其转换为数组。该脚本应该有所帮助。

{
   "script" : {
     "source": "if (!(ctx._source.tags instanceof List)) {ctx._source.tags = [ctx._source.tags]} ctx._source.tags += params.newTag",
     "lang": "painless",
     "params" : {
        "newTag" : "blue"
     }
   }
}


 类似资料:
  • 问题内容: 我有一个简单的字典,其定义如下: 现在,我想在此字典中添加一个元素: 如何添加到现有词典中? 问题答案: 您正在使用。除非出于某种原因明确需要将其设为该类型,否则我建议使用Swift字典。 您可以通过迅捷的字典任何期望的功能而无需任何额外的工作,因为和无缝地弥合彼此。Swift的本机方式的优点是字典使用泛型类型,因此,如果将其定义为键和值,就不会错误地使用不同类型的键和值。(编译器代表

  • 问题内容: 我有一个函数,它返回像这样的字典: 我试图将此字典追加到这样的数据框: 不幸的是,数据框的打印导致空的数据框。有任何想法吗? 问题答案: 您没有将值分配给结果。

  • 我正在使用PHP7.3编写一个函数,该函数循环访问输入中接收的一组节点,并将它们添加到文档中。 它可以工作,但当输入值不是数组而是DOMNodeList时,它只在第一个元素上循环。 要再现问题,请执行以下操作: 预期产出: 然而我得到: 循环是不完整的,并且不知为什么第一个元素的引用被从前一个列表中移除并添加到后一个列表中(因此大小为3)。而且,如果我评论 循环按预期遍历列表。函数appendCh

  • 问题内容: 我已经有了一个状态: 现在,我想用新信息对其进行更新。因此,向其添加另一个div。 像这样: 我该怎么做?或者我需要从零开始设置新状态 问题答案: 我认为以组件状态存储jsx组件不是一个好主意。我认为您应该仅以呈现组件所需的状态保存数据。 如果您真的想在状态中存储jsx,为什么不将“对话”属性定义为数组?然后,您可以向其中添加新组件。 但是最好只存储数据,例如“ first”和“ ne

  • 当我尝试console appender并尝试打印该字段时,就像下面的示例一样,它起作用了。 你能告诉我我在udp appender上做错了什么吗?谢谢你的忠告。

  • 问题内容: 假设这样: 我为什么看不到任何东西? 问题答案: 当您将标记字符串传递到时,会使用(或其他适用于特殊情况的容器)容器上的浏览器属性将标记字符串解析为HTML 。无法解析SVG或其他非HTML内容,即使可以,也无法分辨出该内容应该在SVG命名空间中。 在SVGElement上不可用- 它仅是HTMLElement的属性。当前没有属性或其他方法(*)将内容解析为SVGElement。因此,