elasticsearch 嵌入式_Elasticsearch 开箱指南

b16779001bf55b6f24cc6419b5bb81f9.png

内容概要

  • ES 基础介绍,重点是其中的核心概念。
  • 基础 API 实践操作。

1. 基础介绍

Elasticsearch (ES) 是一个数据库,提供了分布式的、准实时搜索和分析。

基于 Apache Lucene,可以操作结构化数据、非结构化数据、数字类型数据、地理空间数据。

数据存储使用松散结构的 JSON 文档。

主要特性

  • 轻量快速的全文搜索。
  • 安全分析和基础设施监控。
  • 支持海量规模,数千台服务器、PB级数据量。
  • 可以集成可视化数据分析工具,用于例如应用性能分析、日志监控、基础设施度量指标监控。
  • 可以用于机器学习,对数据实时进行自动化模型处理。

核心概念

fb4926922592fa1ae9aef90a64aa3d1c.png
  • Index 索引

关系数据库中的,存储文档。

6.0.0 版本之前,一个索引中可以存放不同类型的文档,例如 Car 和 Bike 这2种文档可以在一个索引中。

6.0.0 版本之后,不可以了,需要为每种类型的文档建立不同的索引。

  • Documents 文档

关系数据库中的

每个文档有一个唯一 _id

  • Fields 字段

关系数据库中的

  • 数据类型

1)字符串

有2种类型:text 和 keyword。

text 用户存储产品描述、文章内容之类的文本,可以根据关键字在其中查找。

ES 会把内容解析成一个字符串列表,然后创建倒排索引,描述每个单词都在哪些文档中出现了。

例如一个文档有一个字段 “Description”,值为 “This phone has dual sim capability”。

这个值会被解析为一个列表:

[“this”, “phone”, “has”, “dual”, “sim”, “capability”]

倒排索引中,会指出每个词所在的文档列表,如:

“this” -> doc_1,doc_3

Keyword 用于存储用户名、邮件地址、邮编这类的明确的内容。

这类内容不会被分割解析,适用于精确匹配。

2)数字

存储例如标识码、百分比、电话号等。

支持:long, integer, short, byte, double, float。

3)日期

形式包括:“2015/01/01 12:10:30” 此类的字符串、微秒级 long 型数字、秒级 integer 型数字。

内部使用 UTC long 型存储。

4)布尔

5)IP

6)嵌入式

一个属性可以是一个 JSON 数组。

例如:

{  "name":"ABC United",    "homeGround":"Old Trafford",      "players":[        {          "firstName":"James",          "lastName":"Cohen",          "position":"Goal Keeper"        },        {          "firstName":"Paul",          "lastName":"Pogba",          "position":"Midfielder"        }      ]}

对于嵌入类型,每个数组对象都会被作为一个隐藏文档进行索引。

7)多类型

例如有一个字段 “student_name”,我们希望可以通过部分匹配的方式进行查找,也希望通过完全匹配的方式查找。

这就相当于同时有2种类型:text和 keyword。

可以这样设置:

{     "student_name":{        "type":"text",        "fields":{           "keyword":{              "type":"keyword"         }      }   }}
  • Mapping

用于定义一个索引的 schema。

定义索引中有哪些字段、字段类型,配置类型相关的元数据。

  • Setting

通过 Setting 可以自定义一些索引的行为,还允许我们自定义分析器和标准化器,以分析索引的不同文本字段。

重要的 Setting 例如:

1)number_of_shards:定义索引分片数量,默认为 1。

2)number_of_replicas:定义分片的副本数量,默认 1。

3)refresh_interval:用于指定文档索引的时间与可供搜索的时间之间的间隔,默认 1秒。

  • Shard 分片

一个分片是一个 Lucene 实例,是一个被 ES 自动管理的工作单元。

我们只需要指定分片及其副本的数量,无需对分片进行操作。

ES 自动在所有节点中分布所有分片,当节点故障时,会把分片移到其他节点,当有新节点添加进来时,也会自动把一些分片移过来。

  • Replicas 副本

主分片的拷贝,副本的作用:

1)当主分片故障后,其副本可以提升为主分片。

2)主分片及其副本都可以处理查询请求,可以提升性能。

  • Aliases 别名

用于指定索引或索引集的替代名称。

当我们想从多个索引中获取文档时非常有用。

  • Template 模板

用户对多个索引指定通用的 mapping 和 Setting。

每当创建与模板中定义的特定模式匹配的新索引时,模板将应用于该索引。

创建索引时特别定义的任何 mapping/Setting 都将优先于模板中的定义。

2. API 操作

测试环境搭建

使用的 ES 版本为 7.5.1

下面使用docker启动一个单节点环境:

docker run -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" docker.elastic.co/elasticsearch/elasticsearch:7.5.1

测试:

$ curl -X GET "localhost:9200/_cat/nodes?v&pretty"$ curl localhost:9200

参考文档:

https://www.elastic.co/guide/en/elasticsearch/reference/7.5/docker.html

实践操作

  • 创建索引
curl -X PUT "localhost:9200/traveler?pretty" -H 'Content-Type: application/json' -d'{    "settings":{       "number_of_shards":5,      "number_of_replicas":2   },   "mappings":{       "properties":{           "name":{              "type":"keyword"         },         "age":{              "type":"integer"         },         "background":{              "type":"text"         },         "nationality":{              "type":"keyword"         }      }   }}'
  • 插入文档
curl -X PUT "localhost:9200/traveler/_doc/1?pretty" -H 'Content-Type: application/json' -d'{    "name":"John Doe",   "age":"23",   "background":"Born and brought up in California. Engineer by profession. Loves to cook",   "nationality":"British"}'
  • 读取文档
curl -X GET "localhost:9200/traveler/_doc/1?pretty"
  • 删除文档
curl -X DELETE "localhost:9200/traveler/_doc/1?pretty"
  • 删除索引
curl -X DELETE "localhost:9200/traveler?pretty"
  • 所有索引列表
curl -X GET "localhost:9200/_cat/indices"
  • 查看集群健康情况
curl -X GET "localhost:9200/_cat/health?v"
  • 查看某个索引的信息
# mapping + settingcurl -X GET "localhost:9200/traveler?pretty"# mapping curl -X GET "localhost:9200/traveler/_mapping?pretty"# settingcurl -X GET "localhost:9200/traveler/_settings?pretty"
  • 为索引设置别名
curl -X POST "localhost:9200/_aliases" -H 'Content-Type: application/json' -d'{     "actions":[        {           "add":{              "index":"traveler",            "alias":"read_alias"         }      }   ]}'
  • 获取索引中的所有文档
curl -X GET "localhost:9200/traveler/_search?pretty"

结果中的关键项:

took - 此次查询耗时,毫秒。

timed_out - 查询是否超时。

_shards - 查询了分片的情况,如一共查询了几个分片、成功了几个。

hits - 查询结果。

hits.total - 结果文档数。

hits.hits - 结果数组,默认只显示前10个文档。

hits.max_score - 匹配度最高的文档的分值。

hits.hits._score - 此文档匹配度分值。

  • 获取所有中的文档总数
curl -X GET "localhost:9200/traveler/_count?pretty"
  • 匹配查询
curl -X GET "localhost:9200/traveler/_search?pretty" -H 'Content-Type: application/json' -d'{     "query":{        "match":{           "background":"brought up California Loves cook"      }   }}'

匹配条件是 "background",其值会被处理为数组:[“brought”, “up”, “california”, “loves”, “cook”]。

只要其中的某一个与文档中的 "background" 值相匹配,文档就会被返回。

  • term 查询
curl -X GET "localhost:9200/traveler/_search?pretty" -H 'Content-Type: application/json' -d'{     "query":{        "term":{           "name":{              "value":"John Doe"         }      }   }}'

这用于获取在提供的字段中包含确切术语的文档。

适用于 keyword, numeric, date, boolean 类型的字段。

  • terms 查询
curl -X GET "localhost:9200/traveler/_search?pretty" -H 'Content-Type: application/json' -d'{     "query":{        "terms":{           "name":[             "John Doe",            "Jack Ripper",            "Buzz Aldrin"         ]      }   }}'

类似 IN 查询,匹配一个或多个。

  • 前缀匹配查询
curl -X GET "localhost:9200/traveler/_search?pretty" -H 'Content-Type: application/json' -d'{     "query":{        "prefix":{           "name":"Joh"      }   }}'
  • 正则查询
curl -X GET "localhost:9200/traveler/_search?pretty" -H 'Content-Type: application/json' -d'{     "query":{        "regexp":{           "name":{              "value":"J.*e"         }      }   }}'
  • 单次多查询

在一个请求中执行多个查询操作。

curl -X GET "localhost:9200/_msearch?pretty" -H 'Content-Type: application/x-ndjson' -d'{"index":"traveler"}{"query":{"terms":{"name":["John Doe","Jack Ripper","Barack Obama"]}}}{}{"query":{"prefix":{"name":"Buzz"}}}{"index":"traveler"}{"query":{"match_all":{}}}'

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

最良心的 chrome 插件可以良心到什么程度?

CSDN下起了红包雨399 元智能音箱199 元天猫精灵300元现金红包/会员100元红包/会员更有千万流量曝光100%有奖......作为日常总发现 " 宝藏 " 的你总体验过一些 " 王炸 " 级别的chrome插件让你想 “ 真诚 ” 安利所以,CSDN开启了彩虹屁chrome插件…

一文教会你如何写复杂业务代码

简介: 这两天在看零售通商品域的代码。面对零售通如此复杂的业务场景,如何在架构和代码层面进行应对,是一个新课题。针对该命题,我进行了比较细致的思考和研究。结合实际的业务场景,我沉淀了一套“如何写复杂业务代码”…

Day.js 常用方法

文章目录1. 初始化日期 / 时间2. 格式化日期 / 时间3. 加 / 减4. 获取某年某月的第一天或最后一天5. 获取星期几6. 获取毫秒数7. 获取时间差(默认输出的差值单位是毫秒)8. 获取时、分、秒9. 将毫秒转为时分秒10. 判断一个日期是否在另外一个日期之后 isA…

如何使用云原生数据湖,助力线上教育行业逐步智能化

简介: 阿里云基于对象存储OSS构建的数据湖解决方案,帮助企业有效消除数据孤岛的现象,让数据的价值真正被利用起来。 行业综述 线下教育行业因疫情受挫,线上教育却逆势增长 随着90年代互联网的引入,在线教育产品也依托…

caas k8s主控节点如何查询_k8s--04 部署harbor作为k8s镜像仓库

k8s实战部署harbor作为k8s镜像仓库1.实验目标部署k8s私有镜像仓库harbor把demo小项目需要的镜像上传到harbor上修改demo项目的资源配置清单,镜像地址修改为harbord的地址2.再node1上安装harbor[rootnode1 ~]# cd /opt/#上传harbor软件包[rootnode1 /opt]# rz -Erz w…

vue3中使用cookie

前端使用cookie 步骤一 编写方法cookie.ts //获取cookie、 const CooieTool {getCookie: (name: string) > {var arr, reg new RegExp("(^| )" name "([^;]*)(;|$)");if (arr document.cookie.match(reg))return (arr[2]);elsereturn null;},//设…

无人机、IoT 都危险?第五代网络威胁有哪些特点

从无序中寻找踪迹,从眼前事探索未来。2021 年正值黄金十年新开端,CSDN 以中立技术社区专业、客观的角度,深度探讨中国前沿 IT 技术演进,推出年度重磅企划栏目——「拟合」,通过对话企业技术高管大咖,跟踪报…

持续定义SaaS模式云数据仓库+Serverless

导读:今天主要和大家交流的是网易在数据湖 Iceberg 的一些思考与实践。从网易在数据仓库建设中遇到的痛点出发,介绍对数据湖 Iceberg 的探索以及实践之路。 主要内容包括: 数据仓库平台建设的痛点数据湖 Iceberg 的核心原理数据湖 Iceberg 社…

HttpClient 添加 Header http工具类

文章目录1. 常用依赖2. 工具类1. 常用依赖 <!--httpClient Start--><!--httpClient 文件上传 Start--><!-- https://mvnrepository.com/artifact/commons-fileupload/commons-fileupload --><dependency><groupId>commons-fileupload</groupI…

循序渐进db2 第3版_「图书推荐」焊接工程师手册第3版

机械工业出版社陈祝年 陈茂爱 著内容介绍《焊接工程师手册》(第3版)是焊接专业的综合性工具书&#xff0c;基本涵盖了焊接专业的技术内容。本版在保留第2版精华和特色的基础上添加了先进的工艺技术内容。全书共9篇58章。第1篇汇集了焊接工程师最常用而又不易记忆的符号、公式和…

阿里云推出业内首个云原生企业级数据湖解决方案:将在今年双11大规模应用

简介&#xff1a; 数据湖高峰论坛在京召开&#xff0c;阿里云宣布推出业内首个云原生企业级数据湖解决方案&#xff0c;提供EB级数据存储、分析能力&#xff0c;可一站式实现湖存储、湖加速、湖管理、湖计算&#xff0c;帮助企业对数据深入挖掘与分析&#xff0c;洞察其中蕴含的…

云原生时代,阿里云联手博睿数据让IT运维可观测更智能

随着全球信息产业的变革&#xff0c;企业信息化的建设步伐不断加快&#xff0c;企业 IT 系统建设趋于完善&#xff0c;随之而来的是IT 系统日益庞大与复杂化&#xff0c;企业 IT 需求逐渐维护上往 IT 维护倾斜。据中商产业研究院发布的《2020-2025 年中国 IT 运维管理行业市场前…

Serverless对研发效能的变革和创新

对企业而言&#xff0c;Serverless 架构有着巨大的应用潜力。随着云产品的完善&#xff0c;产品的集成和被集成能力的加强&#xff0c;软件交付流程自动化能力的提高&#xff0c;我们相信在 Serverless 架构下&#xff0c;企业的敏捷性有 10 倍提升的潜力。本次分享我主要分为以…

java 携带.crt证书 发送https请求

文章目录一、CURL 方式1. 普通参数2. json参数3. 跳过ssl证书校验二、安装证书1. windows2. linux三、java 请求3.1. form和json方法3.2. 跳过证书请求一、CURL 方式 1. 普通参数 curl -d "grant_typepassword&client_idSmartRest&client_secret594a27f3-4432-4…

c3p0 服务启动获取连接超时_微服务架构中的熔断、降级

微服务架构中熔断和降级是保证服务高可用的一项重要功能点&#xff0c;微服务区别于一体化项目的最大区别也再于熔断和降级&#xff0c;很多微服务项目的开发人员对熔断的理解就是当服务不可用的时候&#xff0c;为了让整体服务可以正常运行&#xff0c;需要让后续的请求直接返…

重塑APM标杆,博睿数据战略升级助力企业数字化转型

&#xff08;博睿数据发布仪式&#xff09; 2021年5月26日&#xff0c;由博睿数据举办的“服务可达 达者为先博睿数据2021年战略升级发布巡展”北京站&#xff0c;在北京金茂威斯汀大饭店圆满举行&#xff01;本次战略升级发布巡展不仅揭开了“数据链DNA”的神秘面纱&#xff…

持续定义SaaS模式云数据仓库+数据银行

简介&#xff1a; 本文将介绍SaaS模式云数据仓库MaxCompute&#xff0c;如何助力数据银行SaaS模式云战略和一体化数据开放场景介绍。 一、云数据仓库 本章节介绍云数据仓库带来的价值及解决方案。 MaxCompute&#xff1a;SaaS模式企业级云数据仓库的应用场景包括广告场景-用…

2020-10-28

Kubernetes的门户-Ingress 目前Kubernetes&#xff08;K8s&#xff09;已经真正地占领了容器编排市场&#xff0c;是默认的云无关计算抽象&#xff0c;越来越多的企业开始将服务构建在K8s集群上。在K8s中&#xff0c;组件通过Service对外暴露服务&#xff0c;常见的包括NodePo…

centos 查找nginx_Linux下查看Nginx安装目录、版本号信息及当前运行的配置文件

Linux环境下&#xff0c;怎么确定Nginx是以那个config文件启动的&#xff1f;输入命令行&#xff1a; ps -ef | grep nginx摁回车&#xff0c;将出现如下图片&#xff1a;master process 后面的就是 nginx的目录。怎么查看服务器上安装的nginx版本号&#xff0c;主要是通过ngi…

530并行日:用超算更省心

科技兴&#xff0c;则民族兴&#xff1b;科技强&#xff0c;则国家强。 从“神舟”飞天、“蛟龙”入海、“天眼”遥看宇宙&#xff0c;到“嫦娥”奔月、“天问”探火、“量子”惊叹世界&#xff0c;这些世人瞩目的科技成就背后&#xff0c;是一代又一代的中国科技工作者前赴后继…