19、Elasticsearch搜索:跨字段实体搜索与邻近匹配详解

Elasticsearch搜索:跨字段实体搜索与邻近匹配详解

跨字段实体搜索

在搜索场景中,像人名、产品或地址等实体的标识信息往往分散在多个字段中。例如,一个人的信息可能这样存储:

{
    "firstname":  "Peter",
    "lastname":   "Smith"
}

一个地址信息可能如下:

{
    "street":   "5 Poland Street",
    "city":     "London",
    "country":  "United Kingdom",
    "postcode": "W1V 3DG"
}

用户可能会搜索“Peter Smith”或“Poland Street W1V”,这些词分别出现在不同字段中,此时使用 dis_max / best_fields 查询来寻找单个最佳匹配字段显然是不合适的。

简单方法

我们可以依次查询每个字段,并将匹配字段的分数相加,这可以通过 bool 查询实现:

{
    "query": {
        "bool": {
            "should": [
                { "match": { "street":    "Poland Stree
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值