1.Elasticsearch下载地址:https://www.elastic.co/cn/downloads/elasticsearch
2.Elasticsearch-Head下载地址:https://github.com/mobz/elasticsearch-head
3.文件夹
bin:elasticsearch的启动脚本等
config:配置文件目录
data:当前节点的分片数据
lib:运行依赖的jar包
logs:日志文件目录
modules:模块库
plugins:插件目录
打开D:\Elasticsearch\elasticsearch-7.4.2\bin下的elasticsearch.bat 浏览器中输入http://localhost:9200/ 注意:7.4以上 默认不在支持指定索引类型,默认索引类型是_doc
看到返回
{ "name" : "DESKTOP-3OBFGCI", "cluster_name" : "elasticsearch", "cluster_uuid" : "Rd1pdgajSYGtVNMbXRZ3aQ", "version" : { "number" : "7.4.2", "build_flavor" : "default", "build_type" : "zip", "build_hash" : "2f90bbf7b93631e52bafb59b3b049cb44ec25e96", "build_date" : "2019-10-28T20:40:44.881551Z", "build_snapshot" : false, "lucene_version" : "8.2.0", "minimum_wire_compatibility_version" : "6.8.0", "minimum_index_compatibility_version" : "6.0.0-beta1" }, "tagline" : "You Know, for Search" }
安装成功
4.修改
找到config文件夹下的elasticsearch.yml,在文件的末尾添加如下内容:
http.cors.enabled: true
http.cors.allow-origin: "*"
5.使用Elasticsearch-Head需要安装nodejs,在D:\Elasticsearch-Head\elasticsearch-head-master下执行cnpm install -g grunt-cli,cnpm install 接着在执行grunt server
显示:
Running "connect:server" (connect) task Waiting forever... Started connect web server on http://localhost:9100
启动成功,访问localhost:9100即可
6.ElasticSearch的基本术语
将ElasticSearch和关系型数据库做一个类比
关系型数据库 ⇒ 数据库(Database) ⇒ 表(Table) ⇒ 行(Rows) ⇒ 列(Columns)
ElasticSearch ⇒ 索引(Index) ⇒ 类型(Type) ⇒ 文档(Docments) ⇒ 字段(Fields)
一个ElasticSearch集群可以包含多个索引(数据库),一个索引中可以包含多个类型(表),一个类型中可以包含多个文档(行),一个文档中可以包含多个字段(列)。
Elasticsearch可以理解为是面向文档型数据库。数据用JSON作为文档序列化的格式。
① Near Realtime(NRT):近实时的意思,表示从写入数据到数据可以被搜索有一个小延迟(大概1秒);基于es执行搜索和分析可以达到秒级。
② Cluster:集群,包含多个节点,每个节点属于哪个集群是通过配置(集群名称,默认是elasticsearch)来决定的,对于中小型应用来说,开始阶段常常一个集群对应一个节点。
③ Node:节点,集群中的一个节点,节点也有一个名称(默认是随机分配的),在执行运维管理操作时节点名称很重要,默认节点会加入一个名称为“elasticsearch”的集群,如果直接启动一堆节点,那么它们会自动组成一个elasticsearch集群,当然一个节点也可以组成一个elasticsearch集群。
④ Document&field:文档,es中的最小数据单元,一个document可以是一条客户数据,一条商品分类数据,一条订单数据,通常用JSON数据结构表示,每个index下的type中,都可以去存储多个document。一个document里面有多个field,每个field就是一个数据字段。
⑤ Index:索引,包含一堆有相似结构的文档数据,比如可以有一个客户索引,商品分类索引,订单索引,索引有一个名称。一个index包含很多document,一个index就代表了一类类似的或者相同的document。比如说建立一个product index,商品索引,里面可能就存放了所有的商品数据,所有的商品document。
⑥ Type:类型,每个索引里都可以有一个或多个type,type是index中的一个逻辑数据分类,一个type下的document,都有相同的field,比如博客系统,有一个索引,可以定义用户数据type,博客数据type,评论数据type。
⑦ Shard:单台机器无法存储大量数据,es可以将一个索引中的数据切分为多个shard,分布在多台服务器上存储。有了shard就可以横向扩展,存储更多数据,让搜索和分析等操作分布到多台服务器上去执行,提升吞吐量和性能。每个shard都是一个lucene index。
⑧ Replica:任何一个服务器随时可能故障或宕机,此时shard可能就会丢失,因此可以为每个shard创建多个replica副本。replica可以在shard故障时提供备用服务,保证数据不丢失,多个replica还可以提升搜索操作的吞吐量和性能。primary shard(建立索引时一次设置,不能修改,默认5个),replica shard(随时修改数量,默认1个),默认每个索引10个shard,5个primary shard,5个replica shard,最小的高可用配置,是2台服务器。
7、ElasticSearch的基本使用(CRUD)
首先对Restful风格的动作有一个了解:GET(查询操作),POST(新增/修改操作),PUT(修改操作),DELETE(删除操作)
create document 自动生成 _id 自动生成的_id
POST users/_doc { "user":"Mike", "post_date":"2019_07_14 23:04:43", "message": "trying out Kibana" } { "_index" : "users", "_type" : "_doc", "_id" : "sScE8WsBpFvH-ktyc4_6", "_version" : 1, "result" : "created", "_shards" : { "total" : 2, "successful" : 1, "failed" : 0 }, "_seq_no" : 0, "_primary_term" : 1 }
create document 指定ID
PUT users/_doc/1?op_type=create { "user":"Mike", "post_date":"2019_07_14 23:04:43", "message": "trying out Kibana" }
Get Document by ID
GET users/_doc/1 { "_index" : "users", "_type" : "_doc", "_id" : "1", "_version" : 1, "_seq_no" : 1, "_primary_term" : 1, "found" : true, "_source" : { "user" : "Mike", "post_date" : "2019_07_14 23:04:43", "message" : "trying out Kibana" } }
INDEX 更新
PUT users/_doc/1 { "user":"Alita" } { "_index" : "users", "_type" : "_doc", "_id" : "1", "_version" : 2, "result" : "updated", "_shards" : { "total" : 2, "successful" : 2, "failed" : 0 }, "_seq_no" : 2, "_primary_term" : 1 }
在原文档上增加字段
POST users/_update/1/ { "doc":{ "post_date":"2019_07_14 23:04:43", "message":"trying out Elasticsearch" } } { "_index" : "users", "_type" : "_doc", "_id" : "1", "_version" : 3, "result" : "updated", "_shards" : { "total" : 2, "successful" : 2, "failed" : 0 }, "_seq_no" : 3, "_primary_term" : 1 }
删除
DELETE users/_doc/1