我在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中的动态模板,但我不太确定这是否适合该用例。
有什么建议吗?
答案 0 :(得分:8)
如果将MongoDB对象language
属性与ES语言分析器的确切名称相匹配,则只需要添加recommended by Elastic way即可:
{
"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"
}
}
}
}
}
}
这样,您可以在MongoDB和ES之间的language/analyzer
字段上实现很好的匹配。