使用脚本更新弹性应用程序搜索中的文档不起作用



我是弹性搜索的新手,我正在使用弹性应用程序搜索

因此,我试图通过MongoDB Realm应用程序更新弹性应用程序搜索中的数据,该应用程序基本上提供CRUD操作的触发器。

我可以添加文档或更新现有字段。

但问题是我无法将元素添加到数组字段中。我想从数组中添加或删除元素,经过一些研究,我发现可以使用一些脚本来完成:

"script": {
"source": "ctx._source.fieldToUpdate.add(elementToAdd);",
"lang": "painless"
}

但它就是不起作用。我正在使用RESTAPI在弹性应用程序搜索中添加或更新数据。我正在使用弹性云管理服务。

更新-1

我使用ES应用程序搜索,我创建并命名该引擎为"搜索引擎";文章";,当我尝试使用kibana运行查询时,我不得不使用一些奇怪的名称"。ent搜索引擎文档文章";。所以我尝试在ElasticSearchRESTneneneba API 中使用相同的名称

POST/.ent搜索引擎文档article/update/docid

它运行得很好,但我只想使用APP搜索的REST API来执行同样的工作。

若要对通过AppSearch存储的数据执行CRUD操作,应使用Documents API


AppSearch不处理嵌套对象,只提供4种字段类型:文本、数字、日期和地理位置。如果你正在发布对象,它会像你在评论中描述的那样将它们压平并串起来。

数组也是如此,所以你不能只将元素添加到一个包含数组的字段中,因为它只是一个文本字段,你需要重写整个字段(尽管它确实将它们检测为数组,并单独处理每个元素,例如,如果你将该字段用作facet(。

关于如何使用AppSearch RESTneneneba API进行补丁,这里有一个受官方文档启发的小示例:

curl -X PATCH 'https://[instance id].ent-search.[region].[provider].cloud.es.io:443/api/as/v1/engines/articles/documents' 
-H 'Content-Type: application/json' 
-H 'Authorization: Bearer private-xxxxxxxxxxxxxxxxxxxx' 
-d '[
{ "id": "your_article_id", 
"source": "your article source",
"lang": "painless" }
]'

还有几种编程语言的客户端,您可能会发现它们的使用很有帮助或更直观。


你看到的发动机的奇怪名字,比如"。ent搜索引擎文档文章">是ElasticSearch上的基础索引,您通常不想直接操作它们。

相关内容

  • 没有找到相关文章

最新更新