Java Elasticsearch:按字母顺序排序,忽略数字&;特殊字符
如何按字母顺序对文本字段排序,忽略特殊字符和数字?默认情况下,特殊字符位于数字和字母之后 我需要的是字母表应该排序并首先出现,然后是数字和特殊字符。这在ES 6.3中是否可能 我已尝试使用自定义分析器替换所有非字母字符,但无效:Java Elasticsearch:按字母顺序排序,忽略数字&;特殊字符,java,
elasticsearch,Java,
elasticsearch,如何按字母顺序对文本字段排序,忽略特殊字符和数字?默认情况下,特殊字符位于数字和字母之后 我需要的是字母表应该排序并首先出现,然后是数字和特殊字符。这在ES 6.3中是否可能 我已尝试使用自定义分析器替换所有非字母字符,但无效: { "analysis": { "analyzer": { "alphabets_analyzer": { "tokenizer": "standard", "type": "keyword", "
{
"analysis": {
"analyzer": {
"alphabets_analyzer": {
"tokenizer": "standard",
"type": "keyword",
"char_filter": [
"alphabets_char_filter"
]
}
},
"char_filter": {
"alphabets_char_filter": {
"type": "pattern_replace",
"pattern": "[^a-zA-Z\\s\\.]",
"replacement": ""
}
}
}
}
我可以通过以下索引级别的设置来解决此问题:
{
"analysis": {
"analyzer": {
"alphabetsStringAnalyzer": {
"tokenizer": "standard",
"filter": "lowercase",
"type": "custom",
"char_filter": [
"alphabets_char_filter"
]
}
},
"char_filter": {
"alphabets_char_filter": {
"type": "pattern_replace",
"pattern": "[^a-zA-Z]",
"replacement": ""
}
}
}
}
并在索引映射中设置此分析器,如下所示:
"fullName":{
"type": "keyword",
"fields": {
"raw": {
"type": "text",
"analyzer": "alphabetsStringAnalyzer",
"fielddata": true
}
}
}
美好的我能用这个。我将模式更改为
[^\p{L}\s]
,这样我就可以保留带有变音符号和空格的字符。