使用通配符和不区分大小写的术语搜索ElasticSearch 6的最佳做法是什么?

时间:2018-03-03 15:16:30

标签: elasticsearch lucene

我想使用通配符和不区分大小写的术语来查询elasticsearch 6中的字段。

目前,该字段已保存为关键字。

{
  "mappings": {
    "myType": {
      "properties": {
        "myObj": {
          "properties": {
            "name": {
              "type": "keyword",
              "normalizer": "lowercase_normalizer"
            }
          }
        }
      }
    }
  }
}

使用

在设置中定义规范化器
{
  "settings": {
    "index": {
      "analysis": {
        "normalizer": {
          "lowercase_normalizer": {
            "filter": [
              "lowercase"
            ],
            "type": "custom",
            "char_filter": []
          }
        }
      }
    }
  }
}

这允许我使用

进行查询
{
  "query": {
    "wildcard": {
      "metaSite.name3": "Aa*" . //* or "aa*"
    }
  }
}
  1. 这是最好的做法吗?
  2. 我的字段是名字。我想我应该把它设置为“测试”而不是关键字 但随后它将以小写形式存储,并且AA *的搜索将不会返回。
  3. 使用通配符和不区分大小写的术语搜索ElasticSearch 6的最佳做法是什么?

0 个答案:

没有答案