栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Elasticsearch入门教程

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Elasticsearch入门教程

ElasticSearch是一个高度可扩展的开源搜索引擎,所有的操作都是通过REST API的形式操作。业也就是说,可以使用任何HTTP客户端来通信。

Elasticsearch特性
  • Elasticsearch可扩展高达PB级的结构化和非结构化数据。
  • Elasticsearch可以用来替代MongoDB和RavenDB等做文档存储。
  • Elasticsearch使用非标准化来提高搜索性能。
Elasticsearch基本概念概念
  • 索引:它是不同类型的文档和文档属性的集合。索引还使用分片的概念来提高性能,可以理解为mysql中的新建一个数据库的概念。
  • 类型:它是共享同一索引中存在的一组公共字段的文档的集合,可以理解为mysql中的数据库表。
  • 类型:它是以JSON格式定义的特定方式的字段集合。可以理解为mysql表中的行数据。
Elasticsearch安装

使用docker镜像的方式快速安装

#拉取镜像
docker pull elasticsearch:7.4.2
#启动镜像
docker run --name elasticsearch -d -e ES_JAVA_OPTS="-Xms512m -Xmx512m" -e "discovery.type=single-node" -p 9200:9200 -p 9300:9300 elasticsearch:7.4.2

安装后访问http://ip/9200 ,出现下图启动成功

安装图形化客户端kibana,操作更加方便

docker pull kibana:7.4.2
#ELASTICSEARCH_HOSTS 指定 elasticsearch服务ip
docker run -itd --name kibana -p 5601:5601 -e ELASTICSEARCH_HOSTS=http://192.168.2.19:9200 -d kibana:7.4.2

访问http://ip:5601 

初步检索 _cat

#查看所有节点
GET /_cat/nodes
#查看es健康状况
GET /_cat/health
#查看主节点
GET /_cat/master
#查看所有索引
GET /_cat/indices

索引一个文档(保存一条数据)

PUT /students/student/1
{
  "name":"zhangsan"
}

保存一条数据,保存在哪个索引的哪个类型下,并且指定唯一标识ID,格式如下:

http://localhost:9200/<索引名称>/<类型名称>/[唯一ID]

索引和类型是必需的,而id部分是可选的。如果不指定ID,ElasticSearch会为我们生成一个ID。 但是,如果不指定id,应该使用HTTP的POST而不是PUT请求,索引名称是任意的。如果服务器上没有此名称的索引,则将使用默认配置来创建一个索引。类型名称也是任意的。我们可以把任何东西放到索引中,只要它是个JSON对象。执行第一次是新增,多次执行变为更新,版本号会自动增加。

查询文档(查询一条数据)

#查询/students索引下student类型ID为1的数据

GET /students/student/1

 响应结果

{
  "_index" : "students",  //在哪个索引下
  "_type" : "student",    //在哪个类型下
  "_id" : "1",    //唯一标识ID
  "_version" : 31, //版本号
  "_seq_no" : 30, //并发控制字段, 每次更新就会+1,用来做乐观锁
  "_primary_term" : 1, //同上,主分片重新分配 如重启,就会变化
  "found" : true,
  "_source" : {  //返回的实际数据
    "name" : "wangwu"
  }
}

更新文档(修改一条数据)

#查询文档
GET /students/student/1

#更新文档
POST /students/student/1
{
  "name":"lisi"
}

#或者
POST /students/student/1/_update
{
  "doc":{
    "name":"wangwu"
  }
}

#区别:带“_update”更新会检查版本,如果没有任何修改,版本号不变,result不变
#不带“_update”每次执行版本号都会变化

删除文档和索引(删除数据) 

DELETE /schools/student/1
DELETE /customer

Bluk批量API

批量新增

在students索引student类型下批量新增

POST /students/student/_bulk
{"index":{"_id":"2"}}
{"name":"lisi"}
{"index":{"_id":"3"}}
{"name":"lisi"}
{"index":{"_id":"4"}}
{"name":"lisi"}

复杂操作

#批量新增,指定索引、类型、id

POST /_bulk
{"create":{"_index":"students","_type":"student","_id":"4"}}
{"name":"lisi"}
{"create":{"_index":"students","_type":"student","_id":"5"}}
{"name":"lisi"}
{"create":{"_index":"students","_type":"student","_id":"6"}}
{"name":"lisi"}

#批量新增
POST /_bulk
{"index":{"_index":"students","_type":"student","_id":"7"}}
{"name":"lisi"}
{"index":{"_index":"students","_type":"student","_id":"8"}}
{"name":"lisi"}
{"index":{"_index":"students","_type":"student","_id":"9"}}
{"name":"lisi"}

#批量修改
POST /_bulk
{"update":{"_index":"students","_type":"student","_id":"4"}}
{"doc":{"name":"wangwu"}}
{"update":{"_index":"students","_type":"student","_id":"5"}}
{"doc":{"name":"wangwu"}}
{"update":{"_index":"students","_type":"student","_id":"6"}}
{"doc":{"name":"wangwu"}}

#批量删除
POST /_bulk
{"delete":{"_index":"students","_type":"student","_id":"7"}}
{"delete":{"_index":"students","_type":"student","_id":"8"}}
{"delete":{"_index":"students","_type":"student","_id":"9"}}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/981325.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号