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

如果它不是现有元素,则附加到Elasticsearch字段列表/数组

尉迟正平
2023-03-14
问题内容

说我们有:

curl -XPOST "http://localhost:9200/t/t/1" -d'
{
     "hobbies" : ["a", "b"]
}'

我知道我可以做到这一点来补充爱好:

curl -XPOST "http://localhost:9200/t/t/1/_update" -d'
{
     "script" : "ctx._source.hobbies += hobby",
     "params" : {
         "hobby" : "c"
     }
}'

但是,如果业余爱好不是’c’而是’b’,我该怎么做,这样我就不会以[“ a”,“ b”,“ b”]结束爱好了?因此,如果“ c”还不是一个爱好,它只会附加“
c”吗?


问题答案:

您可以通过稍微修改OP中的脚本来实现相同目的

范例:

curl -XPOST "http://localhost:9200/t/t/1/_update -d'
{
     "script" : " if(! ctx._source.hobbies.contains(hobby)){ ctx._source.hobbies += hobby }",
     "params" : {
         "hobby" : "c"
     }
}'

上面的示例假定存在现场 爱好 ,并且是一个 列表, 否则您将需要更多的逻辑来处理这些 爱好



 类似资料:
  • 我对自动化测试完全陌生。在参考了一些教程之后,我创建了一个自动测试用例。我尝试自动化的测试用例是在单击表的一个标题后检查排序是否正常工作。 我的自动测试用例失败,出现以下异常: 以下是代码: 例外情况来自此行: 有人能告诉我isse的原因以及如何解决吗? 非常感谢您的帮助

  • 问题内容: Collector的Javadoc显示了如何将流的元素收集到新的List中。有没有一种将结果添加到现有ArrayList中的方法? 问题答案: 注意: osid的答案 显示了如何使用来添加到现有集合。这是对现有集合进行变异的有用且有效的技术。我的答案解决了为什么您不应该使用A 来突变现有集合的原因。 简短的答案是 no ,至少在一般情况下不是这样,您不应该使用a 来修改现有集合。 原因

  • Collector的Javadoc展示了如何将流的元素收集到一个新列表中。是否有一个单行程序将结果添加到现有的ArrayList中?

  • 问题内容: 我想将所有记录上的代码更新为当前的代码,再加上_standard任何想法? 因此,例如,如果代码是apple_1和apple_2,则我需要将它们设置为apple_1_standard和apple_2_standard 前: 伪查询: 预期结果: 问题答案: 您需要在MySQL中使用该函数进行字符串连接:

  • 问题内容: 如果类型不匹配,可以将一些元素追加到elasticsearch字段吗?如果我有这样的文件: 而且我想像这样附加另一个标签字段“蓝色”: 我想要的结果类似于: 我知道这个: 用于将字符串追加到另一个字符串 还有这个: 用于将另一个元素追加到列表。那么有什么办法可以将另一个元素附加到字符串字段呢?谢谢您的任何建议。 问题答案: 您可以做的是添加针对字段类型的测试,然后将其转换为数组。该脚本

  • 问题内容: 我试图将字符串数组作为参数传递给Wetland类的构造函数;我不明白如何将字符串数组的元素添加到字符串数组列表。 问题答案: 您已经具有内置方法:- 注 : -您应该使用没有。 返回一个不同的-> ,不能将其类型转换为。 然后,您将不得不使用方法,这不是很好。所以就用 注意 :-返回的列表是固定大小的列表。如果要向列表中添加某些内容,则需要创建另一个列表,并用于向其中添加元素。所以,那