我有一个ES索引,其中“ total”保存为long int。搜索查询为
GET orders/_search
{
"query": {
"bool": {
"must": [
{
"range": {
"total": {
"get": "1,000.99",
"let": "1,00,000.99"
}
}
}
]
}
},
"_source": ["total"]
}
此查询失败,说明“ number_format_exception”。现在,我们可以指定自定义搜索分析器(https://www.elastic.co/guide/en/elasticsearch/reference/current/search-analyzer.html),但是我找不到任何添加自定义过滤器来处理数字过滤器的方法。
字段“ total”在映射中定义为“ double”。
我尝试使用以下方法
PUT my_index
{
"settings": {
"analysis": {
"filter": {
"custom_regex_filter": {
"type": "pattern_capture",
"patterns": [
"[\\d+\\.]\\d+"
]
}
},
"analyzer": {
"custom_regex_search_analyzer": {
"type": "custom",
"tokenizer": "standard",
"filter": [
"custom_regex_filter"
]
}
}
}
},
"mappings": {
"_doc": {
"properties": {
"total": {
"type": "double",
"search_analyzer": "custom_regex_search_analyzer"
}
}
}
}
}
我不确定是否可以对数字字段使用自定义搜索分析器。