{
"_index" : "test",
"_type" : "test",
"_id" : "1212",
"_version" : 5,
"found" : true,
"_source" : {
"count" : 42,
"list_data" : [ {
"list_id" : 11,
"timestamp" : 1469125397
}, {
"list_id" : 122,
"timestamp" : 1469050965
} ]
}
}
这是我的文档架构。list_data
是嵌套对象。我需要更新/删除其中的特定文件list_data
。我能够count
使用groovy脚本更新字段。
$ curl -XPOST 'localhost:9200/index/type/1212/_update?pretty' -d '
{
"script" : "ctx._source.count = 41"
}'
但是不知道如何更新嵌套对象。
例如,我想将此添加到中list_data
。
{
"list_id" : 121,
"timestamp" : 1469050965
}
并且我的文档应更改为:
{
"_index" : "test",
"_type" : "test",
"_id" : "1212",
"_version" : 6,
"found" : true,
"_source" : {
"count" : 41,
"list_data" : [ {
"list_id" : 11,
"timestamp" : 1469125397
}, {
"list_id" : 121,
"timestamp" : 1469050965
}, {
"list_id" : 122,
"timestamp" : 1469050965
} ]
}
}
如果我基于list_id
= 122 执行删除,则我的记录应如下所示
{
"_index" : "test",
"_type" : "test",
"_id" : "1212",
"_version" : 7,
"found" : true,
"_source" : {
"count" : 41,
"list_data" : [ {
"list_id" : 11,
"timestamp" : 1469125397
}, {
"list_id" : 121,
"timestamp" : 1469050965
}]
}
}
要将新元素添加到嵌套字段,您可以像这样进行操作:
$ curl -XPOST 'localhost:9200/index/type/1212/_update?pretty' -d '
{
"script" : "ctx._source.list_data += newElement",
"params": {
"newElement": {
"list_id" : 121,
"timestamp" : 1469050965
}
}
}'
要从嵌套字段列表中删除现有元素,可以按以下步骤进行:
$ curl -XPOST 'localhost:9200/index/type/1212/_update?pretty' -d '
{
"script" : "ctx._source.list_data.removeAll{it.list_id == remove_id}",
"params": {
"remove_id" : 122
}
}'
问题内容: 这是我在elasticsearch中存储在索引上的数据类型。我必须找到包含主要成分牛肉(且重量小于1000)和成分-(辣椒粉且重量小于250),(橄榄油和重量小于300)以及所有其他成分类似的食谱。 索引的映射是 我的查询是 但这给了Null。有人可以帮我吗?我认为我没有正确使用嵌套查询 问题答案: 试试这个:
尊敬的弹性搜索专家, 我在查询嵌套对象时遇到问题。允许使用以下简化映射: 并将一些文档放在索引中: 现在我想执行这样的查询: 因此,我想得到匹配的公司与数量匹配的文件。因此,上面的查询应该会告诉我: 以下查询: 应该给我所有公司分配到一个文件,其标题包含“GPU”与匹配的文件数量: 如果表现良好,是否有可能实现这一结果?我显然对匹配的文档不感兴趣,只对匹配文档和嵌套对象的数量感兴趣。 谢谢你的帮助
我是Elasticsearch的新手,我试图创建一个过滤器来检索具有特定属性的文档。 属性在映射中定义为嵌套对象,如下所示: 我试图以以下形式执行一个复杂的查询: 这是elasticsearch 2.x。我做错了什么?
问题内容: 是否可以使elasticsearch中的所有嵌套对象自动映射为默认嵌套的类型。而不是对象? 问题答案: 是的,您可以在创建索引时使用以下动态模板来做到这一点:
我有一个带有嵌套映射的索引。我想预先形成一个查询,该查询将返回以下内容:给我搜索词中每个单词出现在一个或多个嵌套文档中的所有文档。 以下是索引: 以下是我尝试的最新查询: 例如,如果我搜索单词“食物和水”,我希望每个单词至少出现在嵌套文档中。即使只有一个单词存在,当前搜索也会返回文档 谢谢你的帮助! 更新:正如克里斯托所建议的,解决方案有效。现在我有以下问题。 这是我的索引: 我要执行的查询是,如
问题内容: 我正在使用以下映射: 文件范例: 我的问题是如何检索此文档并按“日期”对嵌套对象“注释”进行排序?结果: 问题答案: 您需要在inner_hits上对进行排序。这将为您提供所需的输出 我使用的源过滤得到的只有作为将被检索里面,但你能避免,如果你想 是5,因为默认值为3,并且在给定的示例中我们有4个对象。 希望这可以帮助!