Elasticsearch 部分文本匹配查询:如何通过'ben frank'找到目标文档?
如何用"ben frank"匹配包含全名的Elasticsearch文档?
需求场景
需要通过搜索关键词 ben frank,匹配到如下包含完整姓名的文档:
{ "first_name" : "Benjamin", "last_name" : "Franklin" }
对应的Elasticsearch查询语句
可以借助multi_match查询的phrase_prefix类型实现该需求,具体语句如下:
GET /person/_search { "query": { "multi_match": { "query": "ben frank", "fields": ["first_name", "last_name"], "type": "phrase_prefix" } } }
逻辑说明
multi_match支持同时在多个字段上执行匹配操作- 设置
type: phrase_prefix后,Elasticsearch会将查询文本拆分为前缀短语:"ben"会匹配first_name字段中以"ben"开头的内容(如"Benjamin"),"frank"会匹配last_name字段中以"frank"开头的内容(如"Franklin"),以此命中目标文档
内容的提问来源于stack exchange,提问作者Maxim Leanca
相关产品推荐
相关产品推荐

