查找包含带特殊字符的子字符串的文档

时间:2017-04-06 08:39:08

标签: elasticsearch wildcard

我在elasticsearch v5.2.2中有一些文档如下所示:

{
    "query": {
        "wildcard" : { "bloomberg" : "*b34*" }
    }
}

我想查找包含可能包含特殊字符的子字符串的所有文档(在我的情况下为':')。

{
    "query": {
        "wildcard" : { "bloomberg" : "*b34:*" }
    }
}

返回一个结果(如预期的那样)。

undefined method ` =' for #<Agency id: nil, name: nil, ip_adress: nil>

返回none。我尝试过query_string和其他各种各样的东西,但似乎没什么用。

1 个答案:

答案 0 :(得分:1)

问题是我使用的映射只是开箱即用的映射。将bloomberg过滤器的分析器更改为“空白”为我修复了这个问题。

{
    "mappings": {
      "external" : {
        "properties" : {
          "name" : {
            "type" : "string",
            "analyzer": "standard",
            "search_analyzer": "standard"
          },
          "bloomberg" : {
            "type" : "string",
            "analyzer": "whitespace",
            "search_analyzer": "whitespace"
          }
        }
      }
    }
}