当前位置: 首页 > news >正文

山东大学软件学院项目实训-创新实训-基于大模型的旅游平台(三十一)- 微服务(11)

12.7 DSL查询语法

查询的基本语法

  GET /indexName/_search{"query": {"查询类型": {"查询条件": "条件值"}}}

查询所有

  GET /hotel/_search{"query": {"match_all": {}}}
12.7.1 全文检索查询

全文检索查询,会对用户搜索内容进行分词,常用于搜索框搜索

match查询,全文检索查询的一种,会对用户输入内容进行分词,然后去倒排索引库检索

  # match查询GET /hotel/_search{"query": {"match": {"all": "外滩如家"}}}

multi_match: 允许同时查询多个字段,查询字段越多,性能越差

  # multi_match查询GET /hotel/_search{"query": {"multi_match": {"query": "外滩如家","fields": ["brand","name","business"]}}}
12.7.2 精确查询

一般是查找keyword 数值,日期,boolean类型,你不会对搜索条件分词

term: 根据词条精确查询

  # 精确查询GET /hotel/_search{"query": {"term": {"city": {"value": "上海"}}}}

range: 根据值的范围查询:

  # 范围查询GET /hotel/_search{"query": {"range": {"price": {"gte": 100,"lte": 300}}}}

12.7.3 地理查询

geo_bounding_box查询 查询的是给定的两点形成的矩形区域内满足要求的文档

geo_distance 查询的是到指定中心点小于某个距离的文档值

  # 地理查询geo_distanceGET /hotel/_search{"query": {"geo_distance": {"distance": "15km","location": "31.21 , 121.5"}}}
12.7.4 复合查询
12.7.4.1 Function Score 查询

function score : 相关性算分查询,控制文档排名

例 : 给如家品牌的酒店排名考前一点

  GET /hotel/_search{"query": {"function_score": {"query": {"match": {"all": "外滩"}},"functions": [{"filter": {"term": {"brand": "如家"}},"weight": 10}],"boost_mode": "sum" }}}

12.7.4.2 Boolean查询

布尔查询是一个或多个查询子句的集合, 子查询的组合方式有:

must : 必须匹配每个子选项 类似”与“

should : 选择性匹配 类似”或“

must_not: 必须不匹配 ,不参与算分 类似”非“

filter: 必须匹配, 不参与算分

例1:查询上海的皇冠假日或华美达酒店并且价格在500以上,并且得分不低于45分

  GET /hotel/_search{"query": {"bool": {"must": [{"term": {"city": "上海"}}],"should": [{"term": {"brand": "皇冠假日"}},{"term": {"brand": "华美达"}}],"must_not": [{"range": {"price": {"lte": 500} }}],"filter": [{"range": {"score": {"gte": 45}}}]}}}

例2: 查询名字包含如家 价格不高于400 坐标在31.21,121.5周围10km的酒店

  GET /hotel/_search{"query": {"bool": {"must": [{"match": {"brand": "如家"}}],"must_not": [{"range": {"price": {"gt": 400}}}],"filter": [{"geo_distance": {"distance": "10km","location": {"lat": 31.21,"lon": 121.5}}}]}}}
12.7.5 搜索结果处理
12.7.5.1 排序

默认根据先关度算分来排序,可以自定义: keyword类型,数值类型,地理坐标类型,日期类型

普通字段:

  ​GET /hotel/_search{"query": {"match_all": {}},"sort": [{"FIELD": "desc"  }]}

地理位置距离排序:

  GET /hotel/_search{"query":{"match_all": {}},"sort": [{"geo_distance": {"FIELD": "经度,纬度","order": "asc","unit": "km"}}]}

例1: 按用户评价排序酒店,评价相同的按价格排序

  GET /hotel/_search{"query": {"match_all": {}},"sort": [{"score": "desc"},{"price": "asc"}]}

例2: 实现对酒店数据按自己的位置距离进行升序排序

  ​GET /hotel/_search{"query": {"match_all": {}},"sort": [{"_geo_distance": {"location": {"lat": 31.034661,"lon": 121.612282},"order": "asc","unit": "km"}}]}
12.7.5.2 分页
  # 分页查询GET /hotel/_search{"query": {"match_all": {}},"sort": [{"price": "asc"}],"from": 10,      // 从第几条开始"size": 10        // 每页多少条     from+size不能超过10000}

12.7.5.3 高亮
  # 高亮查询  默认情况下  ES搜索字段必须与高亮字段一致GET /hotel/_search{"query": {"match": {"all": "如家"}},"highlight": {"fields": {"name": {"require_field_match": "false",     // 取消默认  改为不用与搜索字段一致"pre_tags": "<em>","post_tags": "</em>"}}}}
http://www.lryc.cn/news/370521.html

相关文章:

  • DevExpress WPF中文教程:Grid - 如何向项目添加GridControl并绑定到数据
  • nodejs湖北省智慧乡村旅游平台-计算机毕业设计源码00232
  • 架构设计 - 根据性能压力测试结果优化服务器性能
  • 【必会面试题】事务的四大特性?ACID
  • 【QT】记录一次QT程序发布exe过程
  • 数据分类分级,误把起点当终点
  • stm32 启动文件分析
  • playwright--简单使用
  • pom学习笔记:kimi的自动化操作
  • 【iOS】UI学习——界面切换
  • 【悬架笔记三】1/4被动悬架垂向动力学仿真+频域特性分析
  • 【C++】——继承(详解)
  • openGauss学习笔记-299 openGauss AI特性-AI4DB数据库自治运维-DBMind的AI子功能-SQLdiag慢SQL发现
  • Git 分支管理规范化[Git Flow ]分支管理策略
  • 一键Mock工具(Http协议接口调试工具)
  • Golang的context
  • Android 各个版本名称和特性总结(持续更新)
  • 9.0 Android中的网络技术
  • linux查看端口是否被占用 / 包含某个字符的文件/当前正在运行的进程/根据端口号查找进程
  • 解锁 JavaScript ES6:函数与对象的高级扩展功能
  • 算法金 | 10 大必知的自动化机器学习库(Python)
  • 微信小游戏开发难度大吗?开发流程有哪些?
  • Qt程序打包成单个exe文件
  • 【机器学习】GANs网络在图像和视频技术中的应用前景
  • MFC 使用sapi文字转换为语音
  • (Git)多人协作1
  • MySQL-分组函数
  • 【C语言】联合(共用体)
  • 【博客715】如何从victorimametrics集群中下线vmstorage节点
  • Redis缓存技术详解与实战