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

时间:2015-01-21 17:59:17

标签: elasticsearch lucene

我定义了一个我没有内置的自定义分析器。

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会产生没有结果。我希望结果包含电子邮件,例如" me@example.com"和" some@example.com"。

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

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

弹性搜索可以不这样做吗?

1 个答案:

答案 0 :(得分:3)