gpt4 book ai didi

elasticsearch - Elasticsearch到通配符搜索电子邮件地址

转载 作者:行者123 更新时间:2023-12-02 23:29:27 24 4
gpt4 key购买 nike

我正在尝试将Elasticsearch用于我正在从事的项目。我想知道是否有人可以帮助我朝正确的方向发展。我正在使用100余条记录的索引。

我需要能够使用通配符查询进行搜索,如下所示:

b*g@gmail.com
b*g@*.com
*gus@gmail.com
br*gu*@gmail.com
*g*@*

当我尝试使用通配符和其他搜索时,没有得到完全预期的结果。

我应该考虑使用Elasticsearch进行哪种类型的搜索? ElasticSearch甚至是要使用的正确工具吗?我要从中删除的源是Mysql,因此,如果不是这样,我可以考虑使用Sphinx或Solr。

最佳答案

我假设您已经按照here所述尝试了通配符查询。

但是,无论您的电子邮件是分析还是未分析,它的行为都有很大不同。我建议您删除索引并更改映射。例如

PUT /emails
{
"mappings": {
"email": {
"properties": {
"email": {
"type": "string",
"index": "not_analyzed"
}
}
}
}
}

一旦有了这个,就可以执行普通的通配符查询或query_string。例如
GET emails/_search
{
"query": {
"wildcard": {
"email": {
"value": "s*com"
}
}
}
}

顺便说一句,当您只为电子邮件编制索引而不将其设置为not_analyzed时,默认映射实际上会从域中分离出电子邮件前缀,因此这就是为什么在执行s*@gmail.com时无法获得结果的原因。您仍然会获得s *或* gmail.com的结果,但对于您的情况,使用not_analyzed可以正常工作。如果要支持不区分大小写,则可能需要查看使用uat_url_email标记器的自定义分析器,如 here所述。

关于elasticsearch - Elasticsearch到通配符搜索电子邮件地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38256584/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com