【发布时间】:2016-03-13 04:52:20
【问题描述】:
我想让一个字段被不同的分析器my_analyzer_1和my_analyzer_2索引,看起来像:
{
"settings": {
"analysis": {
"analyzer": {
"my_analyzer_1": {
"type":"custom",
"tokenizer": "keyword"
},
"my_analyzer_2": {
"type":"custom",
"tokenizer": "standard"
}
}
}
},
"mappings": {
"Names": {
"properties": {
"name": {
"type": "string",
// Is it possible?
"analyzer": "my_analyzer_1, my_analyzer_2"
}
}
}
}
}
并且在搜索时,手动指定使用my_analyzer_1或my_analyzer_2。
这意味着,对于fox brown,按术语fox 搜索。使用my_analyzer_1 时不会得到fox brown,因为fox brown 由于keyword 标记器而被分析为一个术语。虽然使用my_analyzer_2 会得到它,因为它被分析为两个术语fox 和brown。
Elasticsearch 允许指定 search_analyzer 和 index_analyzer,但似乎只允许指定单个 search_analyzer 和单个 index_analyzer。
Elasticsearch 可以满足我的要求吗?
(一种解决方法是使用 2 个字段,一个使用 keyword tokenizer,另一个使用 standard tokenizer)
【问题讨论】:
-
multifield是您的选择。
标签: elasticsearch stringtokenizer