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
超级会员免费看
订阅专栏 解锁全文
2795

被折叠的 条评论
为什么被折叠?



