elasticsearch Couchbase-Elasticsearch传输插件。使用_类字段映射到类型,elasticsearch,mapping,couchbase,transport,elasticsearch,Mapping,Couchbase,Transport" /> elasticsearch Couchbase-Elasticsearch传输插件。使用_类字段映射到类型,elasticsearch,mapping,couchbase,transport,elasticsearch,Mapping,Couchbase,Transport" />

elasticsearch Couchbase-Elasticsearch传输插件。使用_类字段映射到类型

elasticsearch Couchbase-Elasticsearch传输插件。使用_类字段映射到类型,elasticsearch,mapping,couchbase,transport,elasticsearch,Mapping,Couchbase,Transport,我正在使用couchbase和elasticsearch传输插件。我的问题是将couchbase文档映射到elasticsearch类型。可以将其映射到elasticsearch.yml: couchbase.typeSelector:org.elasticsearch.transport.couchbase.capi.regextypesector couchbase.typeSelector.documentTypesRegex.type:^type:+$ 然后在elasticsearch中

我正在使用couchbase和elasticsearch传输插件。我的问题是将couchbase文档映射到elasticsearch类型。可以将其映射到elasticsearch.yml:

couchbase.typeSelector:org.elasticsearch.transport.couchbase.capi.regextypesector couchbase.typeSelector.documentTypesRegex.type:^type:+$

然后在elasticsearch中将couchbase中id为“type:123”的文档转换为类型“type”

我对这个解决方案不满意,因为它决定了couchbase中ID字段的类型和格式,导致解决方案不“优雅”,可能会很麻烦

可以使用例如“_class”字段映射文档?使用Java API将文档插入couchbase后,将显示此字段。我认为这将是更好的解决办法


谢谢您的帮助。

Couchbase中的文档id是不可变的,这就是类型选择器基于它的原因。基于某些可变属性(如字段)的类型将允许将Couchbase中的同一文档索引到Elasticsearch中的多个文档。这将意味着数据完整性的丧失

换句话说,Couchbase中文档的主键是id。Elasticseach中文档的主键是_-uid,它是通过将类型和id组合为
{type}{id}
创建的。我们希望它们匹配,这就是为什么插件以这种方式执行它

另一方面,如果您的类型基于id的前缀,则不应使用
RegexTypeSelector
,而应使用
DelimiterTypeSelector
。这样,您只需指定分隔符(“:”,默认情况下),它会将所有前缀映射到一个类型。省去了为每种类型定义单独正则表达式的麻烦

couchbase.typeSelector: org.elasticsearch.transport.couchbase.capi.DelimiterTypeSelector
couchbase.typeSelector.documentTypeDelimiter: ':'

谢谢你的回答,它解释了很多。