博客
关于我
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查询用于复杂的文本组合查询,支持must、should、must_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/

你可能感兴趣的文章
Python到底能做什么?它的优点在哪?
查看>>
python利用pytorch库导出图像分割算子
查看>>
python利用pyshark监听网卡来抓包其中pyshark中摸索的一些可用参数
查看>>
python利用excel分析过杀漏失
查看>>
python判断汉字数目
查看>>
python判断文件是空的,如果是空的,就删除
查看>>
python判断密码是否正确_python密码判断是否符合要求的方法
查看>>
python判断字符串包含中文_Python 判断字符串是否包含中文
查看>>
python删除第一行_Python 乱码指北:一行删掉根目录
查看>>
Python删除列表元素的三种方法
查看>>
python初步学习-python数据类型-集合(set)
查看>>
python列表生成字典_Python中将字典转换为列表的方法
查看>>
python列表对应元素合并为列表及判断一个列表是几维
查看>>
python列表去重复后按照顺序_从包含不可共元素的Python列表中删除重复元素,同时保留顺序?...
查看>>
python列表前几个_python之列表
查看>>
python列表元组
查看>>
Python列表/元组/字典和集合使用
查看>>
python列表 行列选择_python_pandas_dataframe_行列选择_切片操作
查看>>
python列表
查看>>
python列出当前目录、子目录和文件的脚本
查看>>