Elasticsearch入门教程

本文是Elasticsearch的入门教程,涵盖了其特性、基本概念、安装步骤和初步检索操作,包括索引、查询、更新、删除文档,以及Bluk批量API的使用。还介绍了全文检索的多种方式,如排序、分页、指定字段返回、匹配查询、短语匹配、多字段匹配、过滤和分词等。
摘要由CSDN通过智能技术生成

目录

Elasticsearch特性

Elasticsearch基本概念概念

Elasticsearch安装

初步检索

_cat

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

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

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

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

Bluk批量API

全文检索

排序检索

分页查询

返回指定字段

匹配查询(match)分词 

短语匹配(match_phrase)不分词

多字段匹配(multi_match)

结果过滤(filter) 

term 

分词 

自定义扩展词库


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部分是可选的。如果不指定IDElasticSearch会为我们生成一个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&#

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值