Elasticsearch 查询字符串查询带@符号和通配符

Elasticsearch Query String Query with @ symbol and wildcards

我定义了一个自定义分析器,令我惊讶的是它不是内置的。

analyzer": {
    "keyword_lowercase": {
        "type": "custom",
        "filter": [
            "lowercase"
        ],
        "tokenizer": "keyword"
    }
}

那么我对这个字段的映射是:

"email": {
    "type": "string",
    "analyzer": "keyword_lowercase"
}

效果很好。 (http://.../_analyze?field=email&text=me@example.com) ->

"tokens": [
    {
        "token": "me@example.com",
        "start_offset": 0,
        "end_offset": 16,
        "type": "word",
        "position": 1
    }
]

通过该关键字查找效果很好。 http://.../_search?q=me@example.com 产生结果。

问题是试图在查询字符串查询中的任何位置合并通配符。 http://.../_search?q=*me@example.com 产生 no 结果。我希望结果包含 "me@example.com" 和 "some@example.com".

等电子邮件

elasticsearch 似乎使用默认分析器执行搜索,这没有意义。它不应该使用每个字段自己的默认分析器执行搜索吗?

http://.../_search?q=email:*me@example.com returns 结果是因为我告诉它根据字段使用哪个分析器。

elasticsearch不可以吗?

http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/query-dsl-query-string-query.html

analyze_wildcard 设置为 true,默认为 false