【Elasticsearch】【基础】入门
【摘要】 一、Elasticsearch是什么Elasticsearch是基于ApacheLucene全文搜索引擎库实现的一个实时的开源分布式搜索引擎。二、Elasticsearch能做什么支持实时高效全文检索,支持实时高效结构化检索、分析支持分布式实时文档存储支持PB级的结构化或非结构化数据支持拓展,Elasticsearch可配置并且灵活。支持通过RestAPI与应用程序进行通信三、Elastic...
一、Elasticsearch是什么
- Elasticsearch是基于ApacheLucene全文搜索引擎库实现的一个实时的开源分布式搜索引擎。
-
Elasticsearch是一个分布式文档存储。Elasticsearch存储已序列化为JSON文档的复杂数据结构,而不是将信息存储为列形数据行。当您在集群中拥有多个Elasticsearch节点时,存储的文档会分布在集群中,并且可以从任何节点访问。
二、Elasticsearch能做什么
- 支持实时高效全文检索,支持实时高效结构化检索、分析
- 支持分布式实时文档存储
- 支持PB级的结构化或非结构化数据
- 支持拓展,Elasticsearch可配置并且灵活。
- 支持通过RestAPI与应用程序进行通信
三、Elasticsearch怎么安装(windows环境)
- 需要安装最新的java版本,因为ES也是java语言编写的,需要JVM的支持
- 下载最新版的Elasticsearch并解压(选择适合的操作系统版本,本次选择windows)
- 进入解压目录,cd到bin目录,运行elasticseach.bat文件,查看运行结果是否成功。
- 运行elasticsearch文件成功后,浏览器访问http://localhost:9200/,响应结果如下:
- {
"name" : "主机名",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "yqQn9A1fTzKfR064ypqT9w",
"version" : {
"number" : "7.3.2",
"build_flavor" : "default",
"build_type" : "zip",
"build_hash" : "1c1faf1",
"build_date" : "2019-09-06T14:40:30.409026Z",
"build_snapshot" : false,
"lucene_version" : "8.1.0",
"minimum_wire_compatibility_version" : "6.8.0",
"minimum_index_compatibility_version" : "6.0.0-beta1"
},
"tagline" : "You Know, for Search"
}
- {
- 收到上面的响应之后,证明已经启动并运行一个Elasticsearch节点了。
- 如果想搭建一个集群启动多个节点则可以修改config目录下的elasticsearch.yaml文件,文件里面都有详细的配置说明,修改完yaml配置文件之后重启elasticsearch就会生效。
- exit退出即可停止elasticsearch服务
四、如何在应用程序中使用Elasticsearch
-
Elasticsearch安装后,应用程序客户端都可以通过Elasticsearch提供等RestAPI进行与ES通信交互,如通过curl向ES发送请求;不区分语言,同时官方也提供了很多不同语言的客户端库和插件。比如提供了java相关的客户端库,在写java程序的时候,只需要依赖这些库
-
一个Elasticsearch请求curl组成:
curl -X<verb> '<protocol>://<host>:<port>/<path>?<query_string>' -d '<body>'
-
- verb:适当的http方法:GET,POST,PUT,HEAD,DELETE
- protocol: http或者https
- host:Elasticsearch集群中任意节点的主机名,或者使用localhost表示本机
- port: 运行Elasticseach HTTP服务的端口号,默认是9200
- path:API的终端路径(例如_count路径表示返回集群中文档数量),path可能包含多个组件,例如_cluster/stats或_nodes/stats/jvm
- query_string:查询字符串参数
- body:一个json格式的请求体(如果需要的话)
-
配合kibana可视化操作Elasticsearch,简单高效
-
- 官网下载kibana
- 解压到指定目录,根据需要在config目录下修改kibana.yaml配置文件,如server.port,server.host和连接es的elasticsearch.hosts等参数
- 进入解压的bin目录下,执行启动文件,如windows的启动kibana.yaml
- 使用设置的host+port在浏览器上访问,如http://localhost:5601
- 浏览器访问/status路径可查看状态,如http://localhost:5601/status
- 打开路径,连接上es服务后,在kibana页面上就可以创建es的索引,就可以分析探索你的数据了
- 对es数据进行命令的直接操作可以使用Dev Tools控制台,通过命令行与es进行操作交互。
五、Elasticsearce基本概念
- 索引index:每个索引是一系列文档优化的集合,相当于关系数据库中的database
- 文档document:每个文档都是字段的集合,相当于关系数据库中表的行数据rows
- 类型type:表示一类类似的文档,相当于关系数据中的表table
- 字段field:每个字段都是包含key-value键值对的数据,相当于关系数据库中表的列columns
- 映射mapping:类似于DB的schema,描述这一个类型type中的所有文档可能具有的字段或属性,以及这些字段的类型,并且描述如何索引和存储这些字段
- 分片shards:是指将索引划分成多份,每一份就是一个分片,也叫主分片;分片分为两类:主分片和复制分片,这些分片都是一个独立的索引,可以被放置在集群中的任何节点上,方便数据拓展和平衡集群,同时可以复制分片,复制分片不会被分配在与主分片所在的节点上,复制分片主要作用于故障转移机制。
- 节点node:一个节点就是一个ES实例,第一个启动的节点默认就是master节点,其余节点都可以是候选节点(通过node.master设置),当master节点崩了,这些候选节点就有机会选取为master节点;每个节点都保存了集群信息的状态,只有master节点才能修改集群的状态信息。
Elasticsearch是面向文档(document oriented)的,它可以存储整个对象或文档(document)。然而它不仅仅是存储,还会索引(index)每个文档的内容使之可以被搜索。在Elasticsearch中,你可以对文档(而非成行成列的数据)进行索引、搜索、排序、过滤。
在Elasticsearch中,文档归属于一种类型(type),而这些类型存在于索引(index)中,我们可以简单的对比传统关系型数据库:
Relational DB -> Databases -> Tables -> Rows -> Columns
Elasticsearch -> Indices -> Types -> Documents -> Fields
六、使用场景
-
在应用程序或者网站中添加搜索框的场景
-
存储和分析日志、指标和安全事件数据的场景
-
使用机器学习实时自动建模的行为数据的场景
-
使用es作为存储介质自动执行业务工作流
-
使用es作为地理信息系统(GIS)管理、集成和分析空间信息
-
使用es作为生物信息学研究工具存储和处理遗传数据
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)