elasticsearch02-Request Body深入搜索
02. Request Body深入搜索
# 获取健康值
GET _cat/health
# 创建一个_id=1的记录!
PUT /test1/_doc/1
{
"name":"haima",
"age":35,
"gender":"男"
}
# 获取mappings信息
GET test1
GET test1/_mapping
GET test1/_mapping?pretty
# 获取所有索引所有信息
GET _search
# 获取test1所有信息
GET test1/_search
# 获取test1索引 类型为_doc所有信息
GET test1/_doc/_search
# 获取test1所有信息
GET test1/_search
{
"query": {
"match_all": {}
}
}
# 修改单个字段
POST test1/_update/1
{
"doc": {
"age":37
}
}
# 获取id为1的
GET /test1/_doc/1
# 删除test1索引的命令
DELETE test1
# 删除test1索引 _id=2的记录
DELETE test1/_doc/2
1.1 term查询
term是表达语义的最小单位,在搜索的时候基本都要使用到term,精确查询,不会分词。
term查询的种类有:Term Query、Terms Query、Range Query等。
Term Query: 查单个字段 匹配单个单词
Terms Query: 查单个字段 匹配多个单词
Range Query: 范围查询
Constant Score: 将查询转换为一个filter,避免算分,利用缓存
在ES中,Term查询不会对输入进行分词处理,将输入作为一个整体,在倒排索引中查找准确的词项。 我们也可以使用 Constant Score 将查询转换为一个filter,避免算分,利用缓存,提高查询的效率。
1.1.1 term 与 terms
# 查movies所有记录
GET movies/_search
# query term查询
# 查单个字段 匹配单个单词
# 查询电影名字中包含有 beautiful 这个单词的所有的电影,用于查询的单词不会进行分词的处理
GET movies/_search
{
"query": {
"term": {
"title": {
"value": "beautiful"
}
}
}
}
# query terms查询
# 查单个字段 匹配多个单词
# 查询电影名字中包含有 beautiful 或者 mind 这两个单词的所有的电影,用于查询的单词不会进行 分词的处理
GET movies/_search
{
"query": {
"terms": {
"title": [
"beautiful",
"mind"
]
}
}
}
1.1.2 range 范围查询
# 查询上映在2016到2018年的所有的电影,再根据上映时间的倒序进行排序 desc / asc
GET movies/_search
{
"query": {
"range": {
"year": {
"gte": 2016,
"lte": 2018
}
}
}
,"sort": [
{
"year": {
"order": "desc"
}
}
]
}
GET movies/_search
{
"query": {
"bool": {
"must": [
{
"range": {
"lastchecktime": {
"gte": "2022-07-01 16:14:00"
}
}
}
]
}
}
}
1.1.3 Constant Score
# 查询title中包含有beautiful的所有的电影,不进行相关性算分,查询的数据进行缓存,提高效率
GET movies/_search
{
"query": {
"constant_score": {
"filter": {
"term": {
"title": "beautiful"
}
}
}
}
}
1.2 全文查询
全文查询的种类有: Match Query、Match Phrase Query、Query String Query等
Match Query: 查单个字段 匹配单个或多个单词
Match Phrase Query:
Query String Query:
索引和搜索的时候都会进行分词,在查询的时候,会对输入进行分词,然后每个词项会逐个到底层进行 查询,将最终的结果进行合并
1.2.1 match
# 查询电影名字中包含有beautiful的所有电影,每页十条,取第二页的数据
GET movies/_search
{
"query": {
"match": {
"title": "beautiful"
}
},
"size": 10,
"from": 10
}
# 查询电影名字中包含有beautiful的所有电影
# 用关键词查询,keyword会不分词,会区分大小写,
# 每页十条,取第一页的数据
GET movies/_search
{
"query": {
"match": {
"title.keyword": "Beautiful"
}
},
"size": 10,
"from": 0
}
# 查询电影名字中包含有 beautiful 或者 mind 的所有的数据,但是只查询title和id两个属性
GET movies/_search
{
"_source": ["id","title"],
"query": {
"match": {
"title": "beautiful mind"
}
}
}
# query match查询
GET /test1/_search
{
"query": {
"match": {
"name.keyword": "haima"
}
}
}
# 前置匹配
GET /test1/_search
{
"query": {
"prefix": {
"name.keyword": {
"value": "hai"
}
}
}
}
# filter
GET /test1/_search
{
"query": {
"bool": {
"must": [
{
"term": {
"name.keyword": "haima"
}
}
],
"filter": [
{
"term": {
"name.keyword": "haima"
}
}
]
}
}
}
GET /test1/_search
{
"query": {
"bool": {
"must": [
{
"match_all": {}
}
],
"filter": [
{
"ids": {
"values": [
"1"
]
}
}
]
}
}
}
GET /kibana_sample_data_flights/_search
{
"query": {
"bool":{
"filter":{
"term":{
"DestCountry":"CN"
}
}
}
},
"aggs": {
"agg_OriginWeather": {
"terms": {
"field":"OriginWeather",
"size": 10
}
},
"agg_DestCityName": {
"terms": {
"field":"DestCityName",
"size": 10
}
}
},
"size": 1
}
# 分词器
GET _analyze
{
"analyzer":"ik_smart",
"text": "我是中国人"
}
GET _analyze
{
"analyzer":"ik_max_word",
"text": "我是中国人"
}
GET _analyze
{
"analyzer":"ik_max_word",
"text":"狂神说java"
}
PUT /test2
{
"mappings": {
"_doc": {
"properties": {
"name": {
"type": "text"
},
"age": {
"type": "long"
},
"birthday": {
"type": "date"
}
}
}
}
}
# 时间类型
PUT /test2
{
"mappings": {
"properties": {
"date": {
"type": "date",
"format": "yyyy-MM-dd HH:mm:ss||yyyy-MM-dd ||HH:mm:ss ||epoch_millis"
}
}
}
}
GET /test2/_mapping?pretty
# 获取所有
GET /test2/_doc/_search
# 获取所有
POST /test2/_search
{
"query": {
"match_all": {}
}
}
DELETE test2
POST _bulk
{"index":{"_index":"test2","_type":"_doc","_id":1}}
{ "date": "2022-01-02" }
{"index":{"_index":"test2","_type":"_doc","_id":2}}
{ "date": "12:00:00" }
{"index":{"_index":"test2","_type":"_doc","_id":3}}
{ "date": "1420070400001" }
{"index":{"_index":"test2","_type":"_doc","_id":4}}
{ "date": "2018-10-01 12:00:00" }
elasticsearch02-Request Body深入搜索的更多相关文章
- 一步步开发自己的博客 .NET版(5、Lucenne.Net 和 必应站内搜索)
前言 这次开发的博客主要功能或特点: 第一:可以兼容各终端,特别是手机端. 第二:到时会用到大量html5,炫啊. 第三:导入博客园的精华文章,并做分类.(不要封我) 第四:做 ...
- ASP搜索查询
html code: <form name="frm_Search" method="get" action="Search.asp" ...
- Android Api 27 在 Android 8.0 上出现 Only fullscreen opaque activities can request orientation 的解决情况
刚上班,没有业务开发,对 App 的 Api 由 26 升级到了 27, 结果在 Android 8.0 的设备上会出现 crash . Log 如下: java java.lang.IllegalS ...
- iOS高德地图使用-搜索,路径规划
项目中想加入地图功能,使用高德地图第三方,想要实现确定一个位置,搜索路线并且显示的方法.耗了一番功夫,总算实现了. 效果 WeChat_1462507820.jpeg 一.配置工作 1.申请key 访 ...
- datagrid在MVC中的运用02-结合搜索
本文接着上一篇,来体验给datagrid加上搜索功能.主要涉及到: ※ 把一个div与datagrid相关起来 ※ datagrid接收查询参数 ※ 查询参数的封装 效果图: 查询参数封装 分页相关的 ...
- stark组件(11):组合搜索
效果图: 新增函数和类 Option 获取字段的对象或元组 SearchGroupRow 封装数据,展示到前端 get_search_group 获取组合搜索的字段 get_search_group_ ...
- Django项目:CRM(客户关系管理系统)--26--18PerfectCRM实现King_admin搜索关键字
search_fields = ('name','qq',) 登陆密码设置参考 http://www.cnblogs.com/ujq3/p/8553784.html search_fields = ( ...
- Elasticsearch 搜索API
章节 Elasticsearch 基本概念 Elasticsearch 安装 Elasticsearch 使用集群 Elasticsearch 健康检查 Elasticsearch 列出索引 Elas ...
- 使用elasticsearch搭建自己的搜索系统
什么是elasticsearch Elasticsearch 是一个开源的高度可扩展的全文搜索和分析引擎,拥有查询近实时的超强性能. 大名鼎鼎的Lucene 搜索引擎被广泛用于搜索领域,但是操作复杂繁 ...
- 专业5 laravel框架添加,删除,恢复,分页,搜索接口
//////////////////////资源路由 //商品资源路由恢复Route::get('/restore/{id}','goodController@restore');//商品资源路由添加 ...
随机推荐
- Mac M芯片下载centos7的iso镜像
1.登陆Centos官网下载镜像 https://www.centos.org/download/ 这里需要下载ARM框架点击进入: 点击进入选择一个镜像仓库进行下载: http://isoredir ...
- 探索基于WebRTC的有感录屏技术开发流程
第一章:技术原理 WebRTC(Web Real-Time Communication)是一种开放源代码项目,旨在通过浏览器之间的点对点通信实现实时音视频通信.WebRTC利用JavaScript A ...
- 如何在openGauss 2.1.0中使用Job
如何在 openGauss 2.1.0 中使用 Job 如何在 openGauss 2.1.0 中使用 Job Job 类似 unix 中的 crontab,有定时执行的功能,可以在指定的时间点或每天 ...
- HarmonyOS振动效果开发指导
Vibrator开发概述 振动器模块服务最大化开放硬工最新马达器件能力,通过拓展原生马达服务实现振动与交互融合设计,打造细腻精致的一体化振动体验和差异化体验,提升用户交互效率和易用性.提升用户体验 ...
- k8s之hostPath存储卷
一.简介 hostPath:用于将目录从工作节点的文件系统挂载到pod中. 数据的生命周期与节点相同.我们知道,虽然hostPath卷实现pod中数据存储到节点的文件系统中,但是pod的调度不是固定的 ...
- 【6】Spring JavaConfig和常见Annotation
Java 5 的推出,加上当年基于纯 Java Annotation 的依赖注入框架 Guice 的出现,使得 Spring 框架及其社区也"顺应民意",推出并持续完善了基于 Ja ...
- docker 应用篇————docker原理[三]
前文 前面就已经介绍了docker的安装,在https://www.cnblogs.com/aoximin/p/12906218.html,这里面,这里作为重新整理. 那么这里就不介绍了,这里直接是进 ...
- 前端之多线程 ---webworker
一.啥是workerJavaScript为单线程,worker则为JavaScript创建多线程环境.使用场景如:计算文件hash,计算大于1G的文件hash过程是很慢的,但由于要将hash传给后端, ...
- python异步正则字符串替换,asyncio异步正则字符串替换re
自然语言处理经常使用re正则模块进行字符串替换,但是文本数量特别大的时候,需要跑很久,这就需要使用asyncio异步加速处理 import pandas as pd import re import ...
- vue3中动态添加路由刷新无法正确匹配路由组件
1.问题 动态添加路由之后,页面重新匹配路由,匹配到了设置的404 notfound页面 该页面是在路径无法匹配到的时候才会跳转的页面 2. 问题查找 在前置路由守卫打印to 发现当前地址匹配到的组件 ...