我想让一个字段由不同的分析器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
时会获得它,因为它被分析为2个术语fox
和brown
。
Elasticsearch允许指定search_analyzer和index_analyzer,但似乎只允许指定单个search_analyzer和单个index_analyzer。
Elasticsearch可以满足我的要求吗?
(一种解决方法是使用2个字段,一个使用keyword
标记符,另一个使用standard
标记生成器
答案 0 :(得分:2)
"name": {
"type": "string",
"fields": {
"analyzed1": { "type": "string", "analyzer": "analyzer1" },
"analyzed2": { "type": "string", "analyzer": "analyzer2" }
}
}
然后您可以在
上查询`name.analyzed1` or `name.analyzed2`
取决于您是要使用analyzer1
还是analyzer2
参考: https://www.elastic.co/guide/en/elasticsearch/reference/current/_multi_fields.html