我有像MongoDB一样存储的文档:
const demoArticle = {
created: new Date(),
title: [{
language: 'english',
value: 'This is the english title'
}, {
language: 'dutch',
value: 'Dit is de nederlandse titel'
}]
}
我想将分析器添加到特定语言中,通常指定如下:
"mappings": {
"article": {
"properties": {
"created": {
"type": "date"
},
"title.value": {
"type": "text",
"analyzer": "english"
}
}
}
}
但问题是:根据子级别上设置的语言,它应该根据相同的语言设置分析器.
我偶然发现了ElasticSearch中的动态模板,但我不太相信它适用于这个用例.
有什么建议?
如果您将MongoDB对象language
属性与ES语言分析器的确切名称相匹配,那么您只需按照Elastic方式推荐的方式添加:
{ "mappings": { "article": { "properties": { "created": { "type": "date" }, "title": { "type": "text", "fields": { "english": { "type": "text", "analyzer": "english" }, "dutch": { "type": "text", "analyzer": "dutch" }, "bulgarian": { "type": "text", "analyzer": "bulgarian" } } } } } }
通过这种方式,您可以language/analyzer
在MongoDB和ES之间进行匹配.