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

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

1 介绍

主要介绍索引请求的基础API操作,使用postman进行请求,接口请求的前缀地址统一为elasticsearch 部署IP地址+端口号(例如 http://192.168.51.4:9200 。

统一请求地址:

POST /search_demo/_doc/_search

2 multi_match

multi_match 满足使用 match 在多个字段中进行查询的需求

传递JSON数据

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

请求结果

{       "took": 3,    "timed_out": false,    "_shards": {           "total": 1,        "successful": 1,        "skipped": 0,        "failed": 0    },    "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": "确实是个很好的组合,筷子 筷子"                }            }        ]    }}

3 boost

boost 权重,为某个字段设置权重,权重越高,文档相关性得分就越高。通常来说,搜索商品名称要比商品简介的权重要高。

传递JSON数据

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

请求结果

{       "took": 4,    "timed_out": false,    "_shards": {           "total": 1,        "successful": 1,        "skipped": 0,        "failed": 0    },    "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": "好的系统必须拥有稳定的系统结构"                }            },            {                   "_index": "search_demo",                "_type": "_doc",                "_id": "1005",                "_score": 3.0979095,                "_source": {                       "nickname": "switch游戏机",                    "id": 1005,                    "desc": "好的游戏,才会有人购买,比如塞尔达"                }            },            {                   "_index": "search_demo",                "_type": "_doc",                "_id": "1003",                "_score": 0.37556386,                "_source": {                       "nickname": "涡轮增压",                    "id": 1003,                    "desc": "极限的速度是需要涡轮增压的"                }            },            {                   "_index": "search_demo",                "_type": "_doc",                "_id": "1012",                "_score": 0.36424035,                "_source": {                       "nickname": "youzi",                    "id": 1012,                    "desc": "永远的神"                }            },            {                   "_index": "search_demo",                "_type": "_doc",                "_id": "1002",                "_score": 0.35254776,                "_source": {                       "nickname": "进击的巨人",                    "id": 1002,                    "desc": "艾伦是会变成真正的巨人的"                }            },            {                   "_index": "search_demo",                "_type": "_doc",                "_id": "1011",                "_score": 0.27665582,                "_source": {                       "nickname": "皮特",                    "id": 1011,                    "desc": "皮特的姓氏好像是彼得"                }            },            {                   "_index": "search_demo",                "_type": "_doc",                "_id": "1007",                "_score": 0.2639615,                "_source": {                       "nickname": "老男孩",                    "id": 1007,                    "desc": "确实是个很好的组合,筷子 筷子"                }            },            {                   "_index": "search_demo",                "_type": "_doc",                "_id": "1009",                "_score": 0.252381,                "_source": {                       "nickname": "露西",                    "id": 1009,                    "desc": "露西是一只很聪明的cat"                }            },            {                   "_index": "search_demo",                "_type": "_doc",                "_id": "1001",                "_score": 0.18093815,                "_source": {                       "nickname": "飞翔的荷兰号",                    "id": 1001,                    "desc": "我在p2pi网站解决项目中遇到的问题,学习到了很多知识"                }            }        ]    }}

nickname^10 代表搜索提升10倍的相关性,也就是说用户搜索的时候,其实以这个nickname为主,desc为辅,nickname的匹配相关度高只要提升权重比例就可以。

4 布尔查询

可以实现多重组合查询

  • must:查询必须匹配搜索条件,譬如 and
  • should:查询匹配满足一个条件,譬如 or
  • must_not:不匹配搜索条件,一个都不满足,譬如 not in

单个查询

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

组合查询

{       "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"        ]}

5 相关信息

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

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

你可能感兴趣的文章
NIFI大数据进阶_NIFI集群知识点_认识NIFI集群以及集群的组成部分---大数据之Nifi工作笔记0014
查看>>
NIFI大数据进阶_NIFI集群知识点_集群的断开_重连_退役_卸载_总结---大数据之Nifi工作笔记0018
查看>>
NIFI大数据进阶_使用NIFI表达式语言_来获取自定义属性中的数据_NIFI表达式使用体验---大数据之Nifi工作笔记0024
查看>>
NIFI大数据进阶_内嵌ZK模式集群1_搭建过程说明---大数据之Nifi工作笔记0015
查看>>
NIFI大数据进阶_内嵌ZK模式集群2_实际操作搭建NIFI内嵌模式集群---大数据之Nifi工作笔记0016
查看>>
NIFI大数据进阶_外部ZK模式集群1_实际操作搭建NIFI外部ZK模式集群---大数据之Nifi工作笔记0017
查看>>
NIFI大数据进阶_实时同步MySql的数据到Hive中去_可增量同步_实时监控MySql数据库变化_操作方法说明_01---大数据之Nifi工作笔记0033
查看>>
NIFI大数据进阶_实时同步MySql的数据到Hive中去_可增量同步_实时监控MySql数据库变化_操作方法说明_02---大数据之Nifi工作笔记0034
查看>>
NIFI大数据进阶_离线同步MySql数据到HDFS_01_实际操作---大数据之Nifi工作笔记0029
查看>>
NIFI大数据进阶_离线同步MySql数据到HDFS_02_实际操作_splitjson处理器_puthdfs处理器_querydatabasetable处理器---大数据之Nifi工作笔记0030
查看>>
NIFI大数据进阶_离线同步MySql数据到HDFS_说明操作步骤---大数据之Nifi工作笔记0028
查看>>
NIFI大数据进阶_连接与关系_设置数据流负载均衡_设置背压_设置展现弯曲_介绍以及实际操作---大数据之Nifi工作笔记0027
查看>>
NIFI数据库同步_多表_特定表同时同步_实际操作_MySqlToMysql_可推广到其他数据库_Postgresql_Hbase_SqlServer等----大数据之Nifi工作笔记0053
查看>>
NIFI汉化_替换logo_二次开发_Idea编译NIFI最新源码_详细过程记录_全解析_Maven编译NIFI避坑指南001---大数据之Nifi工作笔记0068
查看>>
NIFI汉化_替换logo_二次开发_Idea编译NIFI最新源码_详细过程记录_全解析_Maven编译NIFI避坑指南002---大数据之Nifi工作笔记0069
查看>>
NIFI集群_内存溢出_CPU占用100%修复_GC overhead limit exceeded_NIFI: out of memory error ---大数据之Nifi工作笔记0017
查看>>
NIFI集群_队列Queue中数据无法清空_清除队列数据报错_无法删除queue_解决_集群中机器交替重启删除---大数据之Nifi工作笔记0061
查看>>
NIH发布包含10600张CT图像数据库 为AI算法测试铺路
查看>>
Nim教程【十二】
查看>>
Nim游戏
查看>>