我正在使用ElasticSearch5.4,试图从嵌套数据类型中删除一个元素。
我有以下映射:
"links_to_asset": {
"type": "nested",
"properties": {
"note_link_id": {
"type": "long"
},
"user_id": {
"type": "long"
},
"creation": {
"type": "date",
"format": "date_hour_minute_second"
},
"modification": {
"type": "date",
"format": "date_hour_minute_second"
},
"to_asset": {
"type": "integer"
},
"from_asset": {
"type": "integer"
},
"comment": {
"type": "text",
"fields": {
"std": {
"type": "text",
"analyzer": "asset_en_analyzer",
"fields": {
"std": {
"type": "text",
"analyzer": "standard"
}
}
}
}
}
}
}
我在《邮递员》中尝试过以下内容:
localhost:9200/asset/bookmark/20976/_update?pretty
{
"script": "ctx._source.links_to_asset.removeAll{it['note_link_id'] == id}",
"params": {
"id": 7343
}
}
但我得到以下错误:
{
"error": {
"root_cause": [
{
"type": "remote_transport_exception",
"reason": "[NvXYDwh][127.0.0.1:9300][indices:data/write/update[s]]"
}
],
"type": "illegal_argument_exception",
"reason": "failed to execute script",
"caused_by": {
"type": "script_exception",
"reason": "compile error",
"script_stack": [
"... .links_to_asset.removeAll{it['links_to_asset.note_ ...",
" ^---- HERE"
],
"script": "ctx._source.links_to_asset.removeAll{it['links_to_asset.note_link_id'] == id}",
"lang": "painless",
"caused_by": {
"type": "illegal_argument_exception",
"reason": "unexpected token ['{'] was expecting one of [{<EOF>, ';'}]."
}
}
},
"status": 400
}
我在StackOverflow[1][2]的几个不同问题中遵循了这些建议,但没有成功。
嵌套对象是有效的,因为我已经用数据填充了它。此外,id
值也是有效的。
您试图编写Groovy
脚本,但您使用的脚本语言是ElasticSearch5.x中的Painless
试试像这样的事
ctx._source.foo = ctx._source.foo.stream().filter(x -> x =='a').collect(Collectors.toList())
我有一个模型,在几个模型中设置为外键。现在从模型中删除任何对象时,如果该对象在这些模型中被引用,则会抛出ProtectedError。我想让用户在一次操作中删除包含所有受保护对象的对象。 我只需调用 但是当有自己的受保护对象时,操作失败并抛出另一层。我想要实现的是,删除所有受保护的对象,而不区分它存在于哪一层。我知道这可能是一个危险的操作。但我能在没有复杂解决方案的情况下实现这一点吗。提前谢谢。
问题内容: 我有一个Elasticsearch文档,其中包含嵌套对象,我希望能够通过java update api删除它们。这是包含脚本的代码: 这是我的文档的映射: 我没有收到任何错误消息,但是当我在索引上运行查询以查找该嵌套文档时,它并没有被删除。有人可以让我知道我在做什么错吗? 问题答案: 因为是您的脚本,所以需要对其进行说明并按如下方式进行修改(请参见该字段周围的转义双引号)。还有第二种错
尊敬的弹性搜索专家, 我在查询嵌套对象时遇到问题。允许使用以下简化映射: 并将一些文档放在索引中: 现在我想执行这样的查询: 因此,我想得到匹配的公司与数量匹配的文件。因此,上面的查询应该会告诉我: 以下查询: 应该给我所有公司分配到一个文件,其标题包含“GPU”与匹配的文件数量: 如果表现良好,是否有可能实现这一结果?我显然对匹配的文档不感兴趣,只对匹配文档和嵌套对象的数量感兴趣。 谢谢你的帮助
我有一个映射: 我使用三个条件进行筛选: “日志类型”是“爬虫” “2020-05-23”上的“创建数据” “resp”的大小=0 我试图过滤与查询: {"查询":{"bool":{"必须":[{"术语":{"_logType":{"value":"爬虫"}}},{"范围":{"_createdAt":{"gte":"2020-05-23","lte":"2020-05-23","time_zon
问题内容: 这是我在elasticsearch中存储在索引上的数据类型。我必须找到包含主要成分牛肉(且重量小于1000)和成分-(辣椒粉且重量小于250),(橄榄油和重量小于300)以及所有其他成分类似的食谱。 索引的映射是 我的查询是 但这给了Null。有人可以帮我吗?我认为我没有正确使用嵌套查询 问题答案: 试试这个: