Elasticsearch - 我可以在文档级别定义索引时间分析器吗?
Elasticsearch - can I define index time analyzer on document level?
我想将多种语言的页面编入一个索引。但是对于每种语言,我都需要定义自定义语言分析器。所以对于英语页面,它将使用英语分析器,对于捷克语页面,它将使用捷克语分析器。
在搜索时,我会根据当前语言环境设置正确的分析器,因为我不需要跨语言搜索。
在 Elasticsearch 的早期版本中似乎是可行的,但我在 7.6 中找不到实现它的方法
有没有办法实现这个,或者我真的需要为每种语言的每种类型创建一个索引吗?这将导致许多索引只有少量索引文档。
或者有更好的方法来处理这种情况吗?我们正在考虑大约 20 种语言和几种文档类型(据我了解,现在不推荐使用类型,因此每种类型都需要自己的索引)。
您可以使用 Elastic 7.6 中提供的 fields feature,它允许您将不同的语言存储在一个索引中,查询时也可以只使用您选择的语言的子字段想查询。
事实上,有一个 nice official blog from elastic 在谈论进行多语言搜索的不同方法,我给出的方法的灵感来自于所谓的基于字段的语言搜索。
例子
示例索引映射如下所示
{
"mappings": {
"properties": {
"title": {
"type": "text",
"analyzer": "english",
"fields": {
"fr": {
"type": "text",
"analyzer": "french"
},
"es": {
"type": "text",
"analyzer": "spanish"
},
"estonian": {
"type": "text",
"analyzer": "estonian"
}
}
}
}
}
}
我想将多种语言的页面编入一个索引。但是对于每种语言,我都需要定义自定义语言分析器。所以对于英语页面,它将使用英语分析器,对于捷克语页面,它将使用捷克语分析器。
在搜索时,我会根据当前语言环境设置正确的分析器,因为我不需要跨语言搜索。
在 Elasticsearch 的早期版本中似乎是可行的,但我在 7.6 中找不到实现它的方法
有没有办法实现这个,或者我真的需要为每种语言的每种类型创建一个索引吗?这将导致许多索引只有少量索引文档。
或者有更好的方法来处理这种情况吗?我们正在考虑大约 20 种语言和几种文档类型(据我了解,现在不推荐使用类型,因此每种类型都需要自己的索引)。
您可以使用 Elastic 7.6 中提供的 fields feature,它允许您将不同的语言存储在一个索引中,查询时也可以只使用您选择的语言的子字段想查询。
事实上,有一个 nice official blog from elastic 在谈论进行多语言搜索的不同方法,我给出的方法的灵感来自于所谓的基于字段的语言搜索。
例子
示例索引映射如下所示
{
"mappings": {
"properties": {
"title": {
"type": "text",
"analyzer": "english",
"fields": {
"fr": {
"type": "text",
"analyzer": "french"
},
"es": {
"type": "text",
"analyzer": "spanish"
},
"estonian": {
"type": "text",
"analyzer": "estonian"
}
}
}
}
}
}