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不可以吗?
将 analyze_wildcard
设置为 true
,默认为 false
。
我定义了一个自定义分析器,令我惊讶的是它不是内置的。
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不可以吗?
将 analyze_wildcard
设置为 true
,默认为 false
。