多语言弹性搜索映射设置
Multi-language elastic search mapping setup
我在 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 语言分析器的确切名称相匹配,那么您所需要的就是 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
字段。
我在 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 语言分析器的确切名称相匹配,那么您所需要的就是 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
字段。