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

使用Java API更新ElasticSearch索引中的嵌套字段

慕阳
2023-03-14
问题内容

我正在使用Java API对Elasticsearch进行CRUD操作。

我有一个带有嵌套字段的类型,我想更新此字段。

这是我对类型的映射:

"enduser": {
            "properties": {
                "location": {
                    "type": "nested",
                    "properties":{
                        "point":{"type":"geo_point"}
                    }
                }
            }
        }

当然,我的最终用户类型将具有其他参数

现在,我想将此文档添加到我的嵌套字段中:

"location":{
          "name": "London",
           "point": "44.5, 5.2"
}

我在文档中搜索有关如何更新嵌套文档的信息,但找不到任何东西。例如,我在字符串中具有先前的JSON对象(我们将此字符串称为json)。我尝试了以下代码,但似乎无法正常工作:

params.put("location", json);
client.prepareUpdate(index, ElasticSearchConstants.TYPE_END_USER,id).setScript("ctx._source.location = location").setScriptParams(params).execute().actionGet();

我有来自Elasticsearch的解析错误。有人知道我在做什么错吗?


问题答案:

我试图重新创建您的情况,并通过其他方法使用.setScript方法来解决。

您的更新请求现在看起来像:

client.prepareUpdate(index, ElasticSearchConstants.TYPE_END_USER,id).setScript("ctx._source.location =" + json).execute().actionGet()

希望对您有帮助。



 类似资料:
  • 问题内容: 我想在每个更新时间将一个对象添加到字段中。 例如,我有一个文档: 下次,我想在测试字段中添加一个对象并保存旧对象。结果是: 如何实现? 编辑 我使用脚本: 但是,我得到了例外: 编辑 现在,我想添加一个字段以确保更新或插入对象。例如: 当我更新字段时,当id存在时,我将更新对象。相反,我将插入对象。 问题答案: 我建议尝试这样的脚本,该脚本在参数中带有两个参数。它将检查任何嵌套对象是否

  • 假设我有一张这样的桌子: 它以拼花地板的形式存储。我需要在spark中读取表,在“field1”上执行groupBy,然后我需要在ES中存储一个嵌套字段(例如,称为“agg\u字段”),其中包含一个字典列表,其中包含字段2和字段3的值,这样文档将如下所示: 我可以阅读表格并进行分组: 我可以做一些聚合并将结果发送给es: 但我不知道如何将聚合更改为嵌套的“agg\u fields”列,该列将被el

  • 问题内容: 我对ES还是相当陌生,并正在将其用于我的新项目。首先,我为客户提供了一个简单的映射,其中包含名字和姓氏以及付款信息对象列表。如果我在SQL中执行此操作,那将类似于客户表和具有1:许多关系的付款信息表。 这是我要执行的操作的一个简单示例:https : //gist.github.com/anonymous/6109593 我希望根据payInfos嵌套数组中的任何匹配项找到任何客户,即

  • 问题内容: 我正在尝试了解如何在Elasticsearch中更新索引文档。我不明白它是如何工作的?什么是该API指的是在做什么?假设您有一个带有嵌套文档的文档,您需要做什么来更新它? 删除文档然后索引“已更新”版本与普通更新之间有什么区别? 问题答案: 更新请求从Elasticsearch检索源,对其进行修改并将其索引回Elasticsearch。如果您已经具有使用更新的文档副本,则毫无意义。仅索

  • 我使用Spring-Data-ElasticSearch2.0.8和ElasticSearch.2.2.0来动态搜索嵌套对象。 基本上,我的嵌套对象可以有很少的嵌套字段,但我希望在所有这些字段中动态搜索。例如,一个动物文档可以有3x个字段来描述它:名称/大小/描述。 我想在所有这些搜索,因为我的搜索结束点只是有一个‘描述’自由文本选项。因此,当用户在他的入口点键入'15'或'dog'时,搜索将检查

  • 问题内容: 我需要更改索引中的分片数量。索引很大,为了达到测试目的,我可能不得不将配置更改10-15次才能满意。是否有开箱即用的工具提供这种功能?或最简单的方法是做到这一点? 问题答案: 无论是Perl的和Ruby客户直接支持重建索引。 在Perl中,您可以执行以下操作: 在Clinton Gormley 的帖子中查找更多信息。 在Ruby中,您可以执行以下操作: 在相关的 Tyre 提交中找到更