Elasticsearch 学习文档(一)

本文介绍了Elasticsearch的基础知识,包括它的用途、在电商网站的搜索应用,以及在Windows上的安装步骤。详细讲解了Elasticsearch和Kibana的配置修改,并阐述了索引(_index)、类型(_type)和ID(_id)的概念。进一步展示了Elasticsearch的创建、读取、更新、删除(CRUD)操作,以及批量操作和自动生成ID的用法。此外,还讨论了悲观锁和乐观锁的概念,帮助理解Elasticsearch的数据并发控制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

为什么使用Elasticsearch

Elasticsearch使用场景

windows安装Elasticsearch

windows安装Kibana

Elasticsearch配置修改

Kibana配置修改

Elasticsearch 的字段

_index

_type

_id

Elasticsearch 的CRUD操作

手动添加id

新增

查询

修改

删除

批量操作

自动生成id 

新增

Elasticsearch 悲观锁和乐观锁

悲观锁

乐观锁


为什么使用Elasticsearch

Elasticsearch不仅仅可以实现搜索,还能进行分析,还能有mysql不具备的【相关性匹配】。

比如我想搜索【笔记本电脑】,输入时变成【笔记电脑】,这时候Elasticsearch就智能的帮我优化为【笔记本电脑】

Elasticsearch使用场景

  1. 淘宝,京东等电商网站,输入关键词,系统就会给我们提供一些搜索建议
  2. Github使用Elasticsearch检索
  3. ...

windows安装Elasticsearch

Download Elasticsearch | ElasticDownload Elasticsearch or the complete Elastic Stack (formerly ELK stack) for free and start searching and analyzing in minutes with Elastic.https://www.elastic.co/cn/downloads/elasticsearch

windows安装Kibana

Download Kibana Free | Get Started Now | ElasticDownload Kibana or the complete Elastic Stack (formerly ELK stack) for free and start visualizing, analyzing, and exploring your data with Elastic in minutes.https://www.elastic.co/cn/downloads/kibana

Elasticsearch配置修改

在Es的config的目录下,找到elasticsearch.yml文件,添加

//服务名
node.name: node-1
cluster.initial_master_nodes: ["node-1"]
xpack.ml.enabled: false
//开启跨域
http.cors.enabled: true
http.cors.allow-origin: /.*/

Kibana配置修改

在kibana的config的目录下,找到kibana.yml文件,添加

//修改为中文
i18n.locale: "zh-CN"
//如果有多个Es,可以配置(32行)
//elasticsearch.hosts: ["http://localhost:9200","http://localhost:9205"]

Elasticsearch 的字段

_index

含义:属于哪个索引

原则:类似数据库表的定义规则。例如图书放在book索引,用户放在user索引中,每个索引存储和搜索互不影响

定义规则:小写英文,尽量不使用特殊字符

_type

含义:类别

需要注意的是在es9将彻底删除此字段,所以现在对于此字段在不断弱化,基本都为_doc

_id

含义:唯一标识,类似数据表的主键id

可以自动生成或者手动添加

Elasticsearch 的CRUD操作

手动添加id

新增

语法:PUT /{_index}/{_type}/{_id}       

PUT /{_index}/{_type}/{_id}/_create(强制创建,连续执行此命令,数据不会被覆盖)

PUT /book/_doc/1
{
  "name": "vue",
  "description": "前端开发框架",
  "timestamp": "2021-11-24 17:08:00",
  "price": 30.5
}

结果

查询

语法:GET /{_index}/{_type}/{_id}

GET /book/_doc/1

结果

修改

替换(全局替换,相当于删除之后再创建)

语法:PUT /{_index}/{_type}/{_id}

PUT /book/_doc/1
{
  "name": "vue.js",
  "description": "WEB前端开发框架",
  "timestamp": "2021-11-24 18:08:00",
  "price": 31
}

结果

更新(局部替换)

语法:POST /{_index}/_update/{_id}

POST /book/_update/1
{
  "doc":{
     "price": 80 
  }
}

//"doc"为固定语法

结果

删除

删除操作为懒删除,会在一定时机后再统一删除

语法:DELETE /{_index}/{_type}/{_id}

DELETE /book/_doc/1

结果

批量操作

语法

POST /_bulk
{"action":{"metadata"}}
{"data"}

POST /_bulk
{"create":{"_index":"book","_id":"6"}}
{"name":"html","description": "WEB前端开发框架","timestamp": "2021-11-24 18:08:00","price": 31}
{"update":{"_index":"book","_id":"1"}}
{"doc":{"price": 900}}

结果

自动生成id 

新增

语法:POST /{_index}/{_type}

POST /book/_doc
{
  "name": "jq",
  "description": "前端",
  "timestamp": "2021-11-25 17:08:00",
  "price": 80
}

结果

Elasticsearch 悲观锁和乐观锁

悲观锁

有一个进程在访问时,就会对数据上锁,当对数据操作进行完毕时,才释放锁,所以无法多线程同时操作

乐观锁

通过 _version 字段对数据进行操作,可以多线程操作,但是当其中有线程阻塞,就会对之后的线程造成影响,使得其发送重复的请求

本人刚开始学习后端知识,欢迎各位大神指教

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值