Elasticsearch对数字字段使用自定义搜索分析器

时间:2020-07-16 08:10:15

标签: elasticsearch-6.8

我有一个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"
        }
      }
    }
  }
}

我不确定是否可以对数字字段使用自定义搜索分析器。

0 个答案:

没有答案