ElasticSearch学习6

news/2024/12/18 11:22:55/

复杂查询

test3索引中的内容

①查询匹配
  • match:匹配(会使用分词器解析(先分析文档,然后进行查询))
  • _source:过滤字段(就是查询哪些字段)
  • sort:排序
  • formsize 分页(form表示从第几页开始,size表示每页展示多少条数据)
// 查询匹配 
GET / blog / user / _search {"query": {"match": {"name": "流"}},"_source": ["name", "desc"],"sort": [{"age": {"order": "asc"}}],"from": 0,"size": 1
}

②多条件查询(bool)

  • must 相当于 and
  • should 相当于 or
  • must_not 相当于 not (... and ...)
  • filter 过滤
/// bool 多条件查询must <==> andshould <==> ormust_not <==> not (... and ...)filter数据过滤boostminimum_should_match
GET / blog / user / _search {"query": {"bool": {"must": [{"match": {"age": 3}}, {"match": {"name": "流"}}],"filter": {"range": {"age": {"gte": 1,"lte": 3}}}}}
}
③匹配数组(满足数组中的一个值就会被查询出来)
  • 貌似不能与其它字段一起使用
  • 可以多关键字查(空格隔开)— 匹配字段也是符合的
  • match 会使用分词器解析(先分析文档,然后进行查询)
  • 搜词
// 匹配数组 貌似不能与其它字段一起使用
// 可以多关键字查(空格隔开)
// match 会使用分词器解析(先分析文档,然后进行查询)
GET / blog / user / _search {"query": {"match": {"desc": "年龄 牛 大"}}
}
④精确查询
  • term 直接通过 倒排索引 指定词条查询
  • 适合查询 number、date、keyword ,不适合text
// 精确查询(必须全部都有,而且不可分,即按一个完整的词查询)
// term 直接通过 倒排索引 指定的词条 进行精确查找的
GET / blog / user / _search {"query": {"term": {"desc": "年 "}}
}
⑤text和keyword
  • text:
    • 支持分词全文检索、支持模糊、精确查询,不支持聚合,排序操作;
    • text类型的最大支持的字符长度无限制,适合大字段存储;
  • keyword:
    • 不进行分词直接索引、支持模糊、支持精确匹配,支持聚合、排序操作。
    • keyword类型的最大支持的长度为——32766个UTF-8类型的字符,可以通过设置ignore_above指定自持字符长度,超过给定长度后的数据将不被索引,无法通过term精确匹配检索返回结果
// 测试keyword和text是否支持分词
// 设置索引类型
PUT / test {"mappings": {"properties": {"text": {"type": "text"},"keyword": {"type": "keyword"}}}
}
// 设置字段数据
PUT / test / _doc / 1 {"text": "测试keyword和text是否支持分词","keyword": "测试keyword和text是否支持分词"
}
// text 支持分词
// keyword 不支持分词
GET / test / _doc / _search {"query": {"match": {"text": "测试"}}
} 
// 查的到
GET / test / _doc / _search {"query": {"match": {"keyword": "测试"}}
} 
// 查不到,必须是 "测试keyword和text是否支持分词" 才能查到
GET _analyze {"analyzer": "keyword","text": ["测试liu"]
}
// 不会分词,即 测试liu
GET _analyze {"analyzer": "standard","text": ["测试liu"]
}
// 分为 测 试 liu
GET _analyze {"analyzer": "ik_max_word","text": ["测试liu"]
} // 分为 测试 liu
⑥高亮查询
/// 高亮查询
GET blog / user / _search {"query": {"match": {"name": "流"}},"highlight": {"fields": {"name": {}}}
}
// 自定义前缀和后缀
GET blog / user / _search {"query": {"match": {"name": "流"}},"highlight": {"pre_tags": "<p class='key' style='color:red'>","post_tags": "</p>","fields": {"name": {}}}
}


http://www.ppmy.cn/news/1556108.html

相关文章

Emacs折腾日记(四)——elisp控制结构

目前我们接着学习elisp相关语法&#xff0c;这里我是按照 elisp 简明教程 来进行学习。与其说这是我自己写得教程到不如说是在这个上面做得注释。目前我不知道这样是否侵犯相关的知识产权。目前就先这样继续学习&#xff0c;继续写记录吧。 闲话少说&#xff0c;进入本篇的正题…

Linux高性能服务器编程 | 读书笔记 | 10. 高性能I/O框架库Libevent

10. 高性能I/O框架库Libevent Linux服务器程序必须处理三类事件&#xff08;I/O、信号和定时事件&#xff09;&#xff0c;在处理这三类事件时需要考虑以下问题&#xff1a; **统一事件源。**统一处理这三类事件既能使代码简单易懂&#xff0c;又能避免一些潜在的逻辑错误。实…

基于51单片机的键盘/键值/矩阵键盘/数码管proteus仿真

地址&#xff1a; https://pan.baidu.com/s/1aR7CrNG5lmftQ1MtW05LKw 提取码&#xff1a;1234 仿真图&#xff1a; 芯片/模块的特点&#xff1a; AT89C52/AT89C51简介&#xff1a; AT89C52/AT89C51是一款经典的8位单片机&#xff0c;是意法半导体&#xff08;STMicroelectro…

机器学习03-内部学习分享

机器学习03-内部学习分享 文章目录 机器学习03-内部学习分享[toc]1-机器学习概念区分1-传统机器学习VS深度学习-12-传统机器学习VS深度学习-23-传统机器学习VS大模型-3 2-神经网络的演进1-基础数学发展2-神经网络概念提出3-CPU的架构设计、量子计算机的架构设计以及神经元的计算…

令牌(token)+加密(加盐)

目录 一,令牌技术 1,不使用session的原因: 2,有两种解决方案: (1)服务器层面的 (2)客户端层面的(JWT令牌) 生成签名: 生成jwt令牌: 验证令牌是否合法: (3)令牌实际运用 二,加密加盐: 进行加密: 进行验证: 一,令牌技术 1,不使用session的原因: 登录页面,用户会将密…

在OpenCV中轮廓处理

在OpenCV中轮廓处理 函数主要包括以下几个&#xff1a; 阈值化&#xff1a;将图像转换为二值图像&#xff0c;以便更容易地检测轮廓。形态学操作&#xff1a;使用形态学操作&#xff08;如开运算&#xff09;来去除噪声。边缘检测&#xff1a;使用Canny边缘检测算法来检测图像…

day12-历史排行榜

1. 数据存储方案 1.1 分区 1.1.1 优点 &#xff08;1&#xff09;水平拆分&#xff0c;逻辑上还是一张表&#xff0c;业务中的sql语句不需要改变 &#xff08;2&#xff09;提高数据检索、统计的性能 &#xff08;3&#xff09;打破磁盘容量限制&#xff0c;不同的分区可以…

Java语言程序设计进阶篇_编程练习题19.2(使用继承实现GenericStack)

目录 题目 &#xff1a; 19.2&#xff08;使用继承实现GenericStack&#xff09; 代码示例 编程练习题19_2.java 编程练习题19_2Test.java 输出结果&#xff1a; 题目 &#xff1a; 19.2&#xff08;使用继承实现GenericStack&#xff09; /*19.2 * 程序清单19-1中&#…