es 3期 第12节-选择合适的数据查询方式

 #### 1.Elasticsearch是数据库,不是普通的Java应用程序,传统数据库需要的硬件资源同样需要,提升性能最有效的就是升级硬件。
#### 2.Elasticsearch是文档型数据库,不是关系型数据库,不具备严格的ACID事务特性,任何企图直接替代严格事务性场景的应用项目都会失败!!!

##### 索引字段与属性都属于静态设置,若后期变更历史数据需要重建索引才可生效
##### 对历史数据无效!!!!
##### 一定要重建索引!!!!

### GET 方式
# 最简单直接的查询,类似于key/value键值对插叙你,而却还是实时可靠的
# GET 查询基于逐渐ID查询,查询必须带有数据ID

## 单挑查询
# 必须具备主键ID,注意是es的doc id,而非lucene id
# 可查询元数据与源数据
# 也可以查询单纯的源数据
# GET /{index_name}/_doc/{id}
# GET /{index_name}/_source/{id}

DELETE device-001
PUT device-001/_doc/1
{
  "devName":"name-001",
  "devId":"001"
}
GET device-001/_doc/1
GET device-001/_source/1


## 多条查询
# GET /_mget,多条查询,Request body 参数中指定索引
# GET /{index_name}/_mget,多条查询Request Url参数中指定索引

DELETE device-001
PUT device-001/_doc/1
{
  "devName":"name-001",
  "devId":"001"
}
PUT device-001/_doc/2
{
  "devName":"name-002",
  "devId":"002"
}
# 查询方式1
GET /_mget
{
  "docs": [
    {
      "_index": "device-001",
      "_id": "1",
      "_source": true
    },
    {
      "_index": "device-001",
      "_id": "2",
      "_source": true
    }
  ]
}
# 查询方式2
GET device-001/_mget
{
  "docs": [
    {
      "_id": "1",
      "_source": true
    },
    {
      "_id": "2",
      "_source": true
    }
  ]
}
# 查询方式3
GET device-001/_mget
{
  "ids": [
    "1",
    "2"
  ]
}

## request 查询参数

# _source,是否返回原始数据,默认true,可指定多个字段,也可以设置false
GET device-001/_doc/1?_source=devId
GET device-001/_doc/1?_source=devId,devName
GET device-001/_doc/1?_source=false
# _source_includes,原始数据返回字段限制
GET device-001/_doc/1?_source_includes=devId
# _source_excludes,原始数据返回字段限制
GET device-001/_doc/1?_source_excludes=devId
# routing,分片路由字段
GET device-001/_doc/1?routing=1
# preference,分片选择,默认 RoundRobin 算法,可以选择_local有限本地,也可以选择自定义字符串
GET device-001/_doc/1?preference=RoundRobin
# refresh,查询之前,可以设定索引强制刷新,取值返回true/false,默认false
GET device-001/_doc/1?refresh=true
# version,数据版本,通过次设置,控制数据返回是否已经被覆盖
GET device-001/_doc/1?version=1
# version_type,数据版本类型,取值范围 internal、external、external_gte,默认internal
# stored_fields,原始数据存储在lucene中,字段属性store设置为true,默认fasse不启用
GET device-001/_doc/1?stored_fields=true
# realtime,数据是否试试返回,取值范围true|false,默认true
GET device-001/_doc/1?realtime=true

## 实时性检查
# refresh,设置时候立即刷新参数,是否影响GET实时查询
# refresh_interval,设置索引刷新时间,设置大一点
# realtime,实时性get查询参数设置,设置true/false,测试不同的数据

DELETE device-001
PUT device-001
{
  "settings":{
    "refresh_interval":"15s"
  }
}
PUT device-001/_doc/1
{
  "devName":"name-001",
  "devId":"001"
}
GET device-001/_search

### search 查询方式
# search 查询不是非实时的,且包括查询与返回2个阶段
# search查询是最常用的,基于以倒排索引为主实现,在同类多条件查询里面,效率是最高的
# 数值类查询基于BKD树算法,效率同比b-tree高不少

## search 语法
# GET/POST /{index_name}/ search,查询指定索引
# GET/POST /{index_name},{index_name}/ search,查询指定多个索引
# GET/POST/_search,查询所有所有

# 查询1,查询所有索引
GET _search
# 查询2,指定单索引
GET device-001/_search
GET kibana_sample_data_flights/_search
# 查询3,指定多索引
GET kibana_sample_data_flights,device-001/_search

## request 参数
# request_cache,是否启动查询缓存在结果为0时
# from,起始数据位置
# q,通过 URL输入查询条件
# size,单页大小
# sort,排序字段
# routing,查询路由控制
# batched_reduce_size,单分片返回数,默认512条就返回,无需等到全部查询完成
# pre_filter_shard_size,单分片过滤限制,默认 128
# _source,返回原始数据控制
# scroll,是否滚动快照查询
# search_type,全局打分还是分片打分,默认分片打分
# track_total_hits,是否返回总数量,7.0 之后默认返回 10000最多,与 6.X不兼容
# version,是否返回数据的版本号
# _source,指定返回数据字段
# _source_includes,指定返回数据字段
# _source excludes,指定排除返回数据字段
# seq_no_primary_term,设定是否返回主分片的任期编号,取值范围 true/false,默认 false

# max_concurrent_shard_requests,单分片查询并发度限制,默认5个
# preference,分片查询优先度,主分片与副本分片,包括本节点与其它节点,默认基于ES统计数据,此参数用于控制查询时,分片的路由选择,具体的可以参考最后参考文献连接
# 取值          说明                备注
# _only_local   仅限本节点上分片    与协调节点有关系
# _local        优先本地节点上分片,其次默认基于轮训算法选择指定固定节点上的分片
# _only nodes:<node-id>,<node-id>   指定固定的分片,分片编号
# _shards:<shard>,<shard>   自定义分片
# <custom-string>

# 查询1
GET kibana_sample_data_flights/_search?routing=1,2,3
{
  "track_total_hits":true
}
# 查询2
GET kibana_sample_data_flights/_search?version=true&track_total_hits=true&size=10&from=0&sort=FlightNum&_source_includes=FlightNum
{
  
}

## request body 参数
# es也支持提交参数在请求体里面,查询参数与url几乎一致

# 查询
GET kibana_sample_data_flights/_search
{
  "_source": [
    "FlightNum"
  ],
  "version": true,
  "track_total_hits": true,
  "from": 0,
  "size": 2,
  "sort": [
    {
      "FlightNum": {
        "order": "desc"
      }
    }
  ]
}

## response 响应参数
# took 耗时,请求到es后,es查询使用的时间,不是从客户端发出请求后的时间
# _shards,查询分片数信息,总分片数、成功分片数、失败分片数
# hits,返回的结果,返回数据总数,返回结果明细,依据查询条件有所不同

## 筛选数据字段
# ES数据索引字段存储有几个位置,可以分别从不同的位置获取,其中脚本功能是动态的组合
# _source 存储原始json数据
# docvalue_fields 存储倒排索引数据
# stored_fields
# script_fields 脚本生成数据
# runtime_mappings,运行时字段,详细见前面相关字段类型

GET kibana_sample_data_flights/_search
{
  "runtime_mappings": {},
  "docvalue_fields": ["FlightNum"],
  "stored_fields":["AvgTicketPrice"],
  "script_fields": {
    "MY_FIELD":{
      "script":{
        "source":"doc['OriginCountry'].value + '@' + doc['FlightNum'].value"
      }
    }
  },
  "version": true,
  "track_total_hits": true,
  "from": 0,
  "size": 100,
  "sort": [
    {
      "FlightNum": {
        "order": "desc"
      }
    }
  ]
}
GET kibana_sample_data_flights

## 查询任务操作
# 案例练习
# 取消查询任务

#查询任务检索 1
GET _tasks?actions=*search
#取消任务 1
POST _tasks/oTUltX4IQMOUUVeiohTt8A:12345/_cancel
#取消任务 2
POST _tasks/cancel?nodes=nodeldl,nodeld2&actions=*search

## DSL查询语言
# DSL领域查询语言
# 丰富的表达能力
# 学习难度高
# 需要持续联系
## DSL语言表达

# query
# 查询 1
GET kibana_sample_data_flights/_search
{
  "query": {
    "match_all": {}
  }
}
# 查询 2
GET kibana_sample_data_flights/_search
{
  "query": {
    "bool": {
      "should": [
        {
          "term": {
            "FlightNum": {
              "value": "9HY9SWR"
            }
          }
        },
        {
          "match": {
            "DestWeather": "Rain"
          }
        }
      ]
    }
  }
}

## Query与 Filter 选择
# query,查询需要计算分值,分词场景下使用
# filter,查询无需计算分值,精确查询下使用
# query&filter,混合查询需要计算分值

# query 查询
GET kibana_sample_data_flights/_search
{
  "query": {
    "bool": {
      "must": [
        {
          "term": {
            "DestCountry": {
              "value": "AT"
            }
          }
        }
      ]
    }
  }
}
# filter 2
GET kibana_sample_data_flights/_search
{
  "query": {
    "bool": {
      "filter": [
        {
          "term": {
            "FlightNum": {
              "value": "9HY9SWR"
            }
          }
        }
      ]
    }
  }
}
# 混合
GET kibana_sample_data_flights/_search
{
  "query": {
    "bool": {
      "must": [
        {
          "term": {
            "DestCountry": {
              "value": "AT"
            }
          }
        }
      ],
      "filter": [
        {
          "term": {
            "OriginCityName": {
              "value": "Sydney"
            }
          }
        }
      ]
    }
  }
}

## 分值计算算法选择
# Elastic 分值计算算法默认提供3种,需要设置字段属性时设置指定,也可以自己定义分值计算方法函数
# BM25,默认算法,基于TF-IDF,做了归一化处理
# TF-IDF,词频-逆文本频率,ES目前已经停止支持
# Boolean,布尔计算方式,
# 自定义算法,自定义函数,此处省略..

DELETE device-001
PUT device-001
{
  "settings": {
    "refresh_interval": "15s",
    "number_of_shards": 1
  },
  "mappings": {
    "properties": {
      "devId": {
        "type": "keyword"
      },
      "devName00": {
        "type": "text"
      },
      "devName01": {
        "type": "text"
      },
      "devName02": {
        "type": "text",
        "similarity": "BM25"
      },
      "devName03": {
        "type": "text",
        "similarity": "boolean"
      }
    }
  }
}
GET device-001
PUT device-001/_doc/1
{
  "devId": "001",
  "devName00": "devName00",
  "devName01": "devName01",
  "devName02": "devName02",
  "devName03": "devName03"
}
GET device-001/_doc/1

## EQL 查询语言
# EQL,事件查询语言
# 擅长在基于时序类数据查询,必须包括至少2个字段,一个是时间序列字段,一个是事件类目
# 数据内容必须符合 ECS规范标准
# 应用在安全领域,日志领域;不能应用于业务系统领域
# 本次不详细展开,待需要时深入展开

## EQL 语言表达
# 查询语法
# GET/<INDEX-NAME>/_eql/search,指定索引名称
# 数据内容
# @timestamp ,必须包括时序的字段
# event.category,必须默认包括事件类目字段,如果没有,可以指定别的
 

# 安装 metricbeat采集本机日志
# 错误的案例 1
# 数据不符合 ECS 规范标准
GET /kibana_sample_data_ecommerce/_eql/search
{
  "query": """
  products where products.tax_amount==0
  """
}
# 错误的案例 2
# 数据不符合 ECS 规范标准
GET /kibana_sample_data_ecommerce/_eql/search
{
  "query": """
any where event.dataset=="sample ecommerce"
"""
}
# 正确的案例 1
# 数据符合 ECS 规范的
GET metricbeat-7.11.1/_eql/search
{
  "query": """
event where event.module=="system"
"""
}
# 正确的案例 2
# 数据符合 ECS 规范的
GET metricbeat-7.11.1/_eql/search
{
  "query": """
any where agent.type=="metricbeat"
"""
}

# GET 查询参数 https://www.elastic.co/guide/en/elasticsearch/reference/8.6/docs-get.html
# SEARCH 查询参数 https://www.elastic.co/guide/en/elasticsearch/reference/8.6/search-search.html
# 分片查询路由 https://www.elastic.co/guide/en/elasticsearch/reference/8.6/search-shard-routing.html
# EQL 查询语言 https://www.elastic.co/guide/en/elasticsearch/reference/8.6/eql.html
# ECS 参考规范 https://www.elastic.co/guide/en/ecs/1.8/index.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/926920.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Educator头歌:离散数学 - 图论

第1关&#xff1a;图的概念 任务描述 本关任务&#xff1a;学习图的基本概念&#xff0c;完成相关练习。 相关知识 为了完成本关任务&#xff0c;你需要掌握&#xff1a;图的概念。 图的概念 1.一个图G是一个有序三元组G<V,R,ϕ>&#xff0c;其中V是非空顶点集合&am…

day30|leetcode 452. 用最少数量的箭引爆气球, 435. 无重叠区间 , 763.划分字母区间

重叠区间专题 11.用最少的数量引爆气球 有一些球形气球贴在一堵用 XY 平面表示的墙面上。墙面上的气球记录在整数数组 points &#xff0c;其中points[i] [xstart, xend] 表示水平直径在 xstart 和 xend之间的气球。你不知道气球的确切 y 坐标。 一支弓箭可以沿着 x 轴从不同…

电脑提示报错“Directx error”怎么解决?是什么原因导致的?游戏软件提示“Directx error”错误的解决方案

DirectX Error&#xff08;DX错误&#xff09;通常指的是在使用基于DirectX技术的应用程序&#xff08;尤其是游戏&#xff09;时遇到的问题。这个问题可能由多种因素导致&#xff0c;以下是一些可能的原因及相应的解决方案&#xff1a; 可能的原因 DirectX版本不匹配&#x…

K8S网络系列--Flannel网络下UDP、VXLAN模式的通信流程机制分析

文章目录 前言一、了解overlay、underlay容器网络二、网络通信1.分类2.网络虚拟设备对2.1、什么是网络虚拟设备对veth pair?2.2、如何查看容器的网卡与主机的哪个veth设备对是成对的关系? 3、vxlan和vtep3.1、vtep3.2、vxlan相关概念 三、Flannel网络模式剖析0、flannel的作用…

【OpenGL学习笔记】图形渲染管线

文章目录 渲染管线简介顶点输入顶点着色器片段着色器着色器程序链接顶点属性 VAO VBO绘制图元元素缓冲对象 EBO 渲染管线简介 在OpenGL中&#xff0c;一切都是3D的&#xff0c;但屏幕或者窗口是一个2D像素阵列&#xff0c;因此OpenGL的大部分工作是将所有3D坐标转换为适合屏幕…

Linux下的三种 IO 复用

目录 一、Select 1、函数 API 2、使用限制 3、使用 Demo 二、Poll 三、epoll 0、 实现原理 1、函数 API 2、简单代码模板 3、LT/ET 使用过程 &#xff08;1&#xff09;LT 水平触发 &#xff08;2&#xff09;ET边沿触发 4、使用 Demo 四、参考链接 一、Select 在…

视觉语言动作模型VLA的持续升级:从π0之参考基线Octo到OpenVLA、TinyVLA、DeeR-VLA、3D-VLA

第一部分 VLA模型π0之参考基线Octo 1.1 Octo的提出背景与其整体架构 1.1.1 Octo的提出背景与相关工作 许多研究使用从机器人收集的大量轨迹数据集来训练策略 从早期使用自主数据收集来扩展策略训练的工作[71,48,41,19-Robonet,27,30]到最近探索将现代基于transformer的策略…

【Python爬虫五十个小案例】爬取猫眼电影Top100

博客主页&#xff1a;小馒头学python 本文专栏: Python爬虫五十个小案例 专栏简介&#xff1a;分享五十个Python爬虫小案例 &#x1f40d;引言 猫眼电影是国内知名的电影票务与资讯平台&#xff0c;其中Top100榜单是影迷和电影产业观察者关注的重点。通过爬取猫眼电影Top10…

JVM之Synthetic

Synthetic是人造&#xff0c;合成的意思&#xff0c;在虚拟机很多地方使用ACC_SYNTHETIC表示编译器自动生成的&#xff0c;区别于我们自己写的程序代码。这样说可能比较模糊&#xff0c;我们举个例子&#xff1a;我们创建一个内部类&#xff0c;如下 public class TestInnerCl…

Mysql数据库基础篇笔记

目录 sql语句 DDL——数据库定义语言&#xff08;定义库&#xff0c;表&#xff0c;字段&#xff09; 数据库操作&#xff1a; 表操作&#xff1a; DML 增删改语句 DQL 语法编写顺序&#xff1a; 条件查询 DCL 用户管理&#xff1a; 权限管理&#xff1a; 函数 常见字符串内置函…

【大模型】深度解析 NLP 模型5大评估指标及 应用案例:从 BLEU、ROUGE、PPL 到METEOR、BERTScore

在自然语言处理&#xff08;NLP&#xff09;领域&#xff0c;无论是机器翻译、文本生成&#xff0c;还是问答系统开发&#xff0c;模型性能评估指标始终是开发者绕不开的工具。BLEU、ROUGE、PPL&#xff08;困惑度&#xff09;、METEOR 和 BERTScore 是五个最具代表性的指标&am…

【QT】背景,安装和介绍

TOC 目录 背景 GUI技术 QT的安装 使用流程 QT程序介绍 main.cpp​编辑 Wiget.h Widget.cpp form file .pro文件 临时文件 C作为一门比较古老的语言&#xff0c;在人们的认知里始终是以底层&#xff0c;复杂和高性能著称&#xff0c;所以在很多高性能需求的场景之下…

【Maven】依赖冲突如何解决?

准备工作 1、创建一个空工程 maven_dependency_conflict_demo&#xff0c;在 maven_dependency_conflict_demo 创建不同的 Maven 工程模块&#xff0c;用于演示本文的一些点。 什么是依赖冲突&#xff1f; 当引入同一个依赖的多个不同版本时&#xff0c;就会发生依赖冲突。…

自动驾驶决策规划算法-路径决策算法:二次规划

本文为学习自动驾驶决策规划算法第二章第四节(中) 路径二次规划算法》的学习笔记。 1 二次型 二次型的形式为 1 2 x T H x f T x \begin{equation} \frac{1}{2}\boldsymbol{x}^TH\boldsymbol{x}f^T\boldsymbol{x} \end{equation} 21​xTHxfTx​​ 约束 A e q x b e q \be…

学习ASP.NET Core的身份认证(基于Session的身份认证2)

基于Session的身份认证通过后&#xff0c;后续访问控制器的函数时该如何控制访问权限&#xff1f;虽然可以按上篇文章方式在需要做控制的函数开头检查Session的用户标识&#xff0c;可以写个全局通用检查类供所需函数调用&#xff0c;但还是有更简便的方法&#xff0c;本文学习…

立创庐山派 K230 RTSP 推流

立创庐山派使用的是K230芯片&#xff0c;按照教程刷了canmv固件&#xff0c;下载canmv ide&#xff0c;使用嘉楠社区的rtsp和wlan例程&#xff0c;修改成连接wifi以及RTSP推流例程 # Description: This example demonstrates how to stream video and audio to the network us…

matlab代码--卷积神经网络的手写数字识别

1.cnn介绍 卷积神经网络&#xff08;Convolutional Neural Network, CNN&#xff09;是一种深度学习的算法&#xff0c;在图像和视频识别、图像分类、自然语言处理等领域有着广泛的应用。CNN的基本结构包括输入层、卷积层、池化层&#xff08;Pooling Layer&#xff09;、全连…

挑战用React封装100个组件【004】

项目地址 https://github.com/hismeyy/react-component-100 组件描述 组件适用于展示图片的地方&#xff0c;提供了small&#xff0c;medium&#xff0c;large三种大小。可以删除图片&#xff0c;也可以全屏预览图片。 样式展示 前置依赖 今天我们的这个挑战需要用用到了…

【详细介绍及演示】Flink之checkpoint检查点的使用

目录 一、介绍 二、 设置checkpoint检查点演示 1、 代码演示 2、测试代码效果 3、查看快照情况 ​编辑 三、在集群上运行 1、第一次运行 2、第二次运行 四、自定义检查点savePoint 1、提交一个flink job 打成jar包 2、输入一些数据&#xff0c;观察单词对应的数字的…

【进阶篇-Day15:JAVA线程-Thread的介绍】

目录 1、进程和线程1.1 进程的介绍1.2 并行和并发1.3 线程的介绍 2、JAVA开启线程的三种方法2.1 继承Thread类&#xff1a;2.2 实现Runnable接口2.3 实现Callable接口2.4 总结&#xff1a; 3、线程相关方法3.1 获取和设置线程名字的方法3.2 线程休眠方法&#xff1a;3.3 线程优…