博客
关于我
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/

你可能感兴趣的文章
OpenLDAP编译安装及配置
查看>>
Openmax IL (二)Android多媒体编解码Component
查看>>
OpenMCU(一):STM32F407 FreeRTOS移植
查看>>
OpenMCU(三):STM32F103 FreeRTOS移植
查看>>
OpenMCU(三):STM32F103 FreeRTOS移植
查看>>
OpenMCU(二):GD32E23xx FreeRTOS移植
查看>>
OpenMCU(五):STM32F103时钟树初始化分析
查看>>
OpenMCU(四):STM32F103启动汇编代码分析
查看>>
OpenMetadata 命令执行漏洞复现(CVE-2024-28255)
查看>>
OpenMMLab | AI玩家已上线!和InternLM解锁“谁是卧底”新玩法
查看>>
OpenMMLab | S4模型详解:应对长序列建模的有效方法
查看>>
OpenMMLab | 【全网首发】Llama 3 微调项目实践与教程(XTuner 版)
查看>>
OpenMMLab | 不是吧?这么好用的开源标注工具,竟然还有人不知道…
查看>>
OpenMMLab | 面向多样应用需求,书生·浦语2.5开源超轻量、高性能多种参数版本
查看>>
OpenMP 线程互斥锁
查看>>
OpenMV入门教程(非常详细)从零基础入门到精通,看完这一篇就够了
查看>>
OpenObserve云原生可观测平台本地Docker部署与远程访问实战教程
查看>>
openoffice使用总结001---版本匹配问题unknown document format for file: E:\apache-tomcat-8.5.23\webapps\ZcnsDms\
查看>>
views
查看>>
OpenPPL PPQ量化(2):离线静态量化 源码剖析
查看>>