博客
关于我
ES DSL搜索 - multi_match、boost和布尔查询
阅读量:286 次
发布时间:2019-03-01

本文共 3676 字,大约阅读时间需要 12 分钟。

Elasticsearch搜索API入门介绍

搜索API基础

Elasticsearch的搜索API提供了强大的文档搜索功能,以下是常用的操作方法。请通过Postman等工具进行测试,接口请求的前缀地址统一为Elasticsearch部署IP地址+端口号(如http://192.168.51.4:9200)。

请求地址示例

POST /search_demo/_doc/_search

multi_match多字段匹配

multi_match用于在多个字段中进行全文匹配,可以灵活配置匹配字段。

请求示例

{    "query": {        "multi_match": {            "query": "组合",            "fields": ["desc", "nickname"]        }    },    "_source": ["id", "nickname", "desc"]}

返回结果示例

{    "took": 3,    "timed_out": false,    "hits": {        "total": {            "value": 1,            "relation": "eq"        },        "max_score": 2.2874916,        "hits": [            {                "_index": "search_demo",                "_type": "_doc",                "_id": "1007",                "_score": 2.2874916,                "_source": {                    "nickname": "老男孩",                    "id": 1007,                    "desc": "确实是个很好的组合,筷子 筷子"                }            }        ]    }}

boost字段权重设置

boost用于为特定字段设置权重,提升相关性得分。常用于搜索商品名称或关键词时。

请求示例

{    "query": {        "multi_match": {            "query": "好的",            "fields": ["desc", "nickname*10"]        }    },    "_source": ["id", "nickname", "desc"]}

返回结果示例

{    "took": 4,    "hits": {        "total": {            "value": 9,            "relation": "eq"        },        "max_score": 3.1980762,        "hits": [            {                "_index": "search_demo",                "_type": "_doc",                "_id": "1004",                "_score": 3.1980762,                "_source": {                    "nickname": "红帽子",                    "id": 1004,                    "desc": "好的系统必须拥有稳定的系统结构"                }            },            // 其他结果...        ]    }}

布尔查询

bool查询用于复杂的文本组合查询,支持mustshouldmust_not等布尔逻辑。

单个查询示例

{    "query": {        "bool": {            "must": [                {                    "multi_match": {                        "query": "好的",                        "fields": ["desc", "nickname"]                    }                },                {                    "term": {                        "sex": 0                    }                },                {                    "term": {                        "birthday": "1992-12-24"                    }                }            ]        }    },    "_source": ["id", "sex", "nickname", "desc", "birthday"]}

组合查询示例

{    "query": {        "bool": {            "must": [                {                    "match": {                        "desc": "好的"                    }                },                {                    "match": {                        "nickname": "好的"                    }                }            ],            "should": [                {                    "match": {                        "sex": 1                    }                }            ],            "must_not": [                {                    "term": {                        "birthday": "1993-01-24"                    }                }            ]        }    },    "_source": ["id", "sex", "nickname", "desc", "birthday"]}

加权字段查询

{    "query": {        "bool": {            "should": [                {                    "match": {                        "desc": {                            "query": "好的",                            "boost": 2                        }                    }                },                {                    "match": {                        "desc": {                            "query": "男孩",                            "boost": 20                        }                    }                }            ]        }    },    "_source": ["id", "sex", "nickname", "desc", "birthday"]}

相关信息

  • 博文不易,辛苦各位猿友点个关注和赞,感谢!

转载地址:http://sjhx.baihongyu.com/

你可能感兴趣的文章
OpenCV与AI深度学习 | OpenCV快速傅里叶变换(FFT)用于图像和视频流的模糊检测(建议收藏!)
查看>>
OpenCV与AI深度学习 | PaddleOCR 2.9 发布, 正式开源文本图像智能分析利器
查看>>
OpenCV与AI深度学习 | SAM2(Segment Anything Model 2)新一代分割一切大模型介绍与使用(步骤 + 代码)
查看>>
OpenCV与AI深度学习 | T-Rex Label !超震撼 AI 自动标注工具,开箱即用、检测一切
查看>>
OpenCV与AI深度学习 | YOLO11介绍及五大任务推理演示(目标检测,图像分割,图像分类,姿态检测,带方向目标检测)
查看>>
OpenCV与AI深度学习 | YOLOv10在PyTorch和OpenVINO中推理对比
查看>>
OpenCV与AI深度学习 | YOLOv11来了:将重新定义AI的可能性
查看>>
OpenCV与AI深度学习 | YOLOv8自定义数据集训练实现火焰和烟雾检测(代码+数据集!)
查看>>
OpenCV与AI深度学习 | YOLOv8重磅升级,新增旋转目标检测,又该学习了!
查看>>
OpenCV与AI深度学习 | 一文带你读懂YOLOv1~YOLOv11(建议收藏!)
查看>>
OpenCV与AI深度学习 | 五分钟快速搭建一个实时人脸口罩检测系统(OpenCV+PaddleHub 含源码)
查看>>
OpenCV与AI深度学习 | 什么是 COCO 数据集?
查看>>
OpenCV与AI深度学习 | 低对比度缺陷检测应用实例--LCD屏幕脏污检测
查看>>
OpenCV与AI深度学习 | 使用 MoveNet Lightning 和 OpenCV 实现实时姿势检测
查看>>
OpenCV与AI深度学习 | 使用 OpenCV 创建自定义图像滤镜
查看>>
OpenCV与AI深度学习 | 使用 SAM 和 Grounding DINO 分割卫星图像
查看>>
OpenCV与AI深度学习 | 使用OpenCV图像修复技术去除眩光
查看>>
OpenCV与AI深度学习 | 使用OpenCV检测并计算直线角度
查看>>
OpenCV与AI深度学习 | 使用OpenCV轮廓检测提取图像前景
查看>>
OpenCV与AI深度学习 | 使用Python和OpenCV实现火焰检测(附源码)
查看>>