用了Elasticsearch,一口气上5T

如何实现多字段的模糊匹配?

Elasticsearch | 作者 weifengqiyuan | 发布于2017年10月11日 | 阅读数:9888

之前为了多字段匹配使用的是multi_match,但是业务需求模糊匹配,但是使用wildcard query的时候发现不支持多字段模糊匹配,请问该如何实现呢
已邀请:

Cheetah

赞同来自:

使用copy_to,将你需要查询的字段copy_to到一个新的字段中,这个字段按你自己的业务需求来设置是否分词,模糊匹配时针对这个新的字段进行查询即可

thiefsmart - IT宅男

赞同来自:

是不是需要这个?
sql:
select * from table where (col1='111' and col1='111') or (col1='112' and col1='112') or (col1='113' and col1='113')
 
curl .....
{
"query":{
"bool":{
"should":[
{"bool"{"must":[{"match":{"col1":"111"}},{"match":{"col2":"221"}}]}},
{"bool"{"must":[{"match":{"col1":"112"}},{"match":{"col2":"222"}}]}},
{"bool"{"must":[{"match":{"col1":"113"}},{"match":{"col2":"223"}}]}}
]
}
}
}
 

laoyang360 - 《一本书讲透Elasticsearch》作者,Elastic认证工程师 [死磕Elasitcsearch]知识星球地址:http://t.cn/RmwM3N9;微信公众号:铭毅天下; 博客:https://elastic.blog.csdn.net

赞同来自:

bool 和 wildcard结合使用

linfree

赞同来自:

"_all"字段。

jianghaibo

赞同来自:

请问后来解决了吗?谢谢

menzhipeng

赞同来自:

我也碰到这个问题了,单看问题其实较简单,通过should拼接 wildcardQuery 就可以。
我想说的是 多字段一次性进行模糊匹配,效率是个很大的问题,我也提出了这个问题。
如果在效率上有合适解决办法,或者有其他思路可以变相实现,请告知!
求 知无不言~

要回复问题请先登录注册