Elasticsearch学习-入门

一、简介

Elasticsearch是一个高度可扩展的开源的全文搜索引擎和分析引擎。它允许您快速、近实时地存储、搜索和分析大量数据。

二、基本概念

Near Real Time(NRT)

Elasticsearch是一个接近实时的搜索平台。这意味着从索引文档的时间到可搜索的时间之间存在轻微的延迟(通常为1秒)

Node 节点

节点是属于集群一部分的单个服务器,存储数据并参与集群的索引和搜索。一个节点由一个名词标识,默认是启动时分配给该节点的一个UUID,也可以自定义。

可以将节点配置为按集群名称加入特定集群。默认情况下,每个节点都设置为加入名为elasticsearch的集群,这意味着如果启动网络中的多个节点并假设他们可以发现其他节点,它们将自动形成并加入名为elasticsearch的单个集群。

在单个群集中,您可以拥有任意数量的节点。此外,如果网络上当前没有其他Elasticsearch节点正在运行,则默认情况下启动单个节点会形成一个名为elasticsearch的新单节点群集。

Index 索引

索引是一些具有相似特征的文档的集合。索引由名称(必须全部为小写)标识,并且此名称用于在对其中的文档执行索引,搜索,更新和删除操作时引用索引。单个集群中可以根据需要定义多个索引。

Type 类型

即将废弃

Document 文档

文档是可被索引的基本信息单位。文档以JSON表示。

在索引/类型中,您可以根据需要存储任意数量的文档。 请注意,尽管文档实际上驻留在索引中,但实际上文档必须被索引/分配给索引内的类型。

Shards & Replicas(分片和副本)

索引可能存储大量数据,有可能超出单个节点的硬件限制。例如,占用1TB磁盘空间的十亿个文档的索引可能不适合单个节点的磁盘,或者可能由单个节点提供搜索请求会很慢。

为了解决这个问题,Elasticsearch提供了将索引细分为多个碎片的能力。创建索引时可以指定所需的碎片数量。每个分片都是功能齐全且独立的“索引”,可以在集群的任何节点上托管。

分片很重要,有两个原因:

  • 它允许水平分割/缩放内容量
  • 它允许跨越多个节点进行分发和并行操作,从而提高性能和吞吐量

在任何时候都可能出现故障的网络/云环境中,非常有用并且强烈建议拥有故障切换机制,以防碎片/节点以某种方式脱机或因任何原因而消失。为此,Elasticsearch允许您为索引分片建立一个或多个副本。

副本很重要,有两个原因:

  • 在碎片/节点失败的情况下,提供高可用性。副本分片永远不会与主分片在同一节点上
  • 允许扩展搜索量和吞吐量,因为搜索可以在副本上并行执行。

在创建索引时,可以为每个索引定义分片和副本的数量。在创建索引之后,您可以随时更改动态副本的数量,但您无法在事后更改分片的数量。默认每个索引分配5个主分片和1个副本。每个分片中的文档数量是有限的,根据Lucene索引,上限为Integer.MAX_VALUE-128

三、安装Elasticsearch

1.安装jdk,至少需要java8

2.安装elasticsearch,下载安装包解压

启动elasticsearch:./bin/elasticsearch    ./bin/elasticsearch -d -p pid

停止elasticsearch:ctrl+C     kill 'cat pid'

四、基本操作

1、_cat操作

集群健康

GET /_cat/health?v

集群节点列表

GET /_cat/nodes?v

索引列表

GET /_cat/indices?v

2、索引操作

创建一个名为customer的索引

PUT /customer?pretty
GET /_cat/indices?v

创建一个文档,并放入customer索引

PUT /customer/_doc/1?pretty
{
  "name": "wang hui"
}
POST /customer/_doc?pretty
{
   "name": "zhang san"
}

查看文档

GET /customer/_doc/1?pretty

删除索引

DELETE /customer?pretty

更新文档,实际上是先删除再重建

POST /customer/_doc/1/_update?pretty
{
   "doc":{"name":"li si", "age":20}
}
POST /customer/_doc/1/_update?pretty
{
   "script":"ctx._source.age+=5"
}

删除文档

DELETE /customer/_doc/2?pretty

3、批量操作

POST /customer/doc/_bulk?pretty
{"index":{"_id":12}}
{"name":"zhang san"}
{"index":{"_id":15}}
{"name":"li si"}
POST /customer/doc/_bulk?pretty
{"update":{"_id":12}}
{"doc":{"name":"zhang san becomes wang wu"}}
{"delete":{"_id":15}}

注意:当其中一个失败时,会继续往下执行,之后返回中会按顺序给出对应操作的执行结果。

curl -H "Content-Type: application/json" -XPOST "localhost:9200/bank/_doc/_bulk?pretty&refresh" --data-binary "@accounts.json"
curl "localhost:9200/_cat/indices?v"

批量导入accouts.json文件中的数据



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值