我正在编写一个脚本,用于更新索引的嵌套字段。基本上,它添加了新的嵌套文档。我想更新脚本以返回该字段的嵌套文档的总数。
这里是结构
索引:主题嵌套字段:users_read
每当一个新用户阅读时,他的名字就会被添加到“users_read”中。这通过脚本发生。
我想修改脚本以返回number of users_read的值。
{
"_index": "topic",
"_type": "_doc",
"_id": "11111",
"_score": 1.0,
"_source": {
"id": "11111",
"users": [
{
"users_read": "div.sar@abc.com"
},
{
"users_read": "admin2@xyz.com"
},
{
"users_read": "admin"
},
{
"users_read": "admin2@def.com"
}
]
}
}
这是我正在使用的脚本
邮政 - http://elasticserver:9200/topic/_update/11111
{
"script": {
"inline": "ctx._source.users.add(params.user)",
"lang": "painless",
"params": {
"user": {
"users_read":"admin2@dfg.com"
}
},
"source": "ctx._source.users.size()"
}
}
但是我看到了一个例外
{
"error": {
"root_cause": [
{
"type": "x_content_parse_exception",
"reason": "[10:19] [script] failed to parse field [source]"
}
],
"type": "x_content_parse_exception",
"reason": "[10:19] [UpdateRequest] failed to parse field [script]",
"caused_by": {
"type": "x_content_parse_exception",
"reason": "[10:19] [script] failed to parse field [source]",
"caused_by": {
"type": "illegal_argument_exception",
"reason": "must only use one of [source, id] when specifying a script"
}
}
},
"status": 400
}
删除“源”部分时,脚本将更新字段。
POST - http://elasticserver:9200/topic/_update/11111
{
"script": {
"inline": "ctx._source.users.add(params.user)",
"lang": "painless",
"params": {
"user": {
"users_read":"admin2@dfg.com"
}
}
}
}
{
"_index": "topic",
"_type": "_doc",
"_id": "11111",
"_version": 4,
"result": "updated",
"_shards": {
"total": 2,
"successful": 1,
"failed": 0
},
"_seq_no": 3,
"_primary_term": 1
}
非常感谢任何帮助。
我不得不从脚本中删除“源”。在单个脚本中同时拥有source和inline将不起作用。
我试图从弹性搜索集群中获取数据。索引名称:testIndex类型:testType主机:localhost端口:8080 我想使用弹性搜索5.4版本,使用RestClient,我想使用多重匹配查询获取数据。 示例查询如下所示。 最好的方法是什么?我是否可以使用QueryBuilder构建查询并将其用于rest客户端。
这是我的结果源看起来的样子。 {“script”:{“inline”:“ctx._source.name='Where's My Crown”“,”lang“:”painless“},”query“:{”match“:{”movie_id“:69}}} 但我有一个错误: {“type”:“illegal_argument_exception”,“reason”:“意外标记['s']应为[{,‘;’
我正在使用spring数据elasticsearch来执行CRUD操作。 我有一个扩展Elasticsearch chRepository的自定义存储库。 最终,ElasticsearchRepository扩展了CrudRepository,这意味着可以更新现有记录。 问题是,你是如何做到这一点的?我还没有找到一个名为“update()”的方法 我认为做以下事情会有用(代码从https://gi
我有一个问题,我想把弹性搜索的结果减少到1000个,不管有多少匹配的结果匹配,但这不应该影响排名和得分。 我在尝试,但这似乎只是告诉弹性搜索只获得前N个结果,而不考虑分数。如果我说错了,请纠正我。 有什么帮助吗? 编辑: 我已经在使用分页。因此,在From/Size中使用Size只会影响当前页面的大小。但我想将总结果的大小限制为1000,然后对其进行分页。
我正在尝试使用无痛脚本更新文档。我的文档包含等字段(字段名称包含字符 )。 文档示例: 执行以下脚本时,我得到了< code >“a4ayc/8”字段的异常: [type=illegal_argument_exception,原因=无效赋值:无法为除法操作赋值 [/]] 脚本: 有没有解决方法?
我是ES的新手,我正在尝试使用聚合编写搜索查询。 在写同样的东西时,我面临着无痛脚本的问题。 哪里可以得到完整的无痛脚本文档,用于弹性搜索?