Amazon Neptune now supports Full-Text Search Using Amazon Elasticsearch Service。它会自动将数据从海王星复制到Elasticsearch。我的问题是:海王星在复制期间是否支持自定义转换逻辑?例如,我在Neptune中有一个像Brand(id=123, name="Calvin Klein")
一样的顶点,并且我想对该顶点应用定制的转换逻辑,以便将该顶点转换为Elasticsearch中的文档{id:123, name:"Calvin Klein", normalizedName:"calvinklein"}
。
是否支持自定义逻辑?
是的,Neptune ES复制过程确实允许用户拥有自己的转换逻辑,用于在Elastic Search中存储数据。但是必须小心,因为更改ES文档可能会破坏NeptuneGremlin通过ES进行的文本搜索支持,因为它需要文档中的所有原始字段。如果需要,您总是可以将新字段添加到弹性搜索文档中。
可以在Gremlin FTS查询中使用自定义ES字段吗?
如果以与Gremlin属性在ES文档中存储方式相同的方式(即作为“谓词”字段内的嵌套字段来存储,则可以在Gremlin FTS查询中使用自定义ES字段。
Ex: if {normalizedName:"calvinklein"} is to be added as custom field then ES document should store it as:
{
....... // Original fields
"predicates": {
....... // Original Properties
"normalizedName":[
{
"value": "calvinklein"
}
]
}
可以像其他任何属性一样搜索此字段,但只能使用FTS查询。 (因为该字段不是在Neptune中,而是在ES中)
我如何添加自定义转换逻辑?
您所引用的示例使用基于Python的AWS Lambda处理程序,使用NeptuneStreams将数据从Neptune复制到Elastic Search。它从NeptuneStreams获取更改日志,并将它们转换为ES upsert请求。
一个人可以提供自己的Lambda轮询器处理程序实现,以处理Stream记录。请关注以下博客文章以获取详细信息:
https://aws.amazon.com/blogs/database/capture-graph-changes-using-neptune-streams/
根据上述博客文章,请按照以下步骤操作: