Elasticsearch使用

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:Elasticsearchelasticsearch-7.4.2in下的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-Headelasticsearch-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
原文地址:https://www.cnblogs.com/yscec/p/11967497.html