技.艺.道:elasticsearch概念梳理及基础操作

本文详细介绍Elasticsearch的基础概念,包括其与Lucene的关系、Kibana的使用,以及如何进行索引、文档的增删改查等基本操作。同时,文章提供了下载链接和步骤指导,帮助读者快速上手。

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

我想,既然你来看这篇文章了,那么应该不用告诉你ElasticSearch是用来做什么的了。

如果你是无意中看了这篇文章,那我也要对你负责。告诉你这篇文章要介绍的对象是谁,它就是ElasticSearch。后面简称ES。

一个基于文档的分布式搜索分析框架。

当前主流的分布式框架具有的属性,它基本上都有,如高性能,高可用。下面我们进入正题,介绍ES中的概念。我们采用MAP的方式来表述。即A:XXX这种。

一、概念梳理

1.Lucene:Lucene可以被认为是迄今为止最先进、性能最好的、功能最全的搜索引擎库。即,目前最屌的搜索库,只支持java语言,使用复杂。

2.ElasticSearch:简称ES,基于Lucene开发得到,是开源的,使用简单,可拓展。《ElasticSearch权威指南》中如是描述它:

Elasticsearch也使用Java开发并使用Lucene作为其核心来实现所有索引和搜索的功能,但是它的目的是通过简单的RESTful API来隐藏Lucene的复杂性,从而让全文搜索变得简单。

不过,Elasticsearch不仅仅是Lucene和全文搜索,我们还能这样去描述它:

  • 分布式的实时文件存储,每个字段都被索引并可被搜索
  • 分布式的实时分析搜索引擎
  • 可以扩展到上百台服务器,处理PB级结构化或非结构化数据

而且,所有的这些功能被集成到一个服务里面,你的应用可以通过简单的RESTful API、各种语言的客户端甚至命令行与之交互。

上手Elasticsearch非常容易。它提供了许多合理的缺省值,并对初学者隐藏了复杂的搜索引擎理论。它开箱即用(安装即可使用),只需很少的学习既可在生产环境中使用。

Elasticsearch在Apache 2 license下许可使用,可以免费下载、使用和修改。

3.Kibana:ES的配置管理、ES中数据的可视化分析。官方说他:Kibana为您的数据提供了图像,是用于配置和管理Elastic Stack各个方面的可扩展用户界面。

 

基础相关:

4.JSON:全称为Javascript对象符号(JavaScript Object Notation),JSON现在已经被大多语言所支持,而且已经成为NoSQL领域的标准格式。它简洁、简单且容易阅读。

以下使用JSON文档来表示一个用户对象:

{
    "email":      "john@smith.com",
    "first_name": "John",
    "last_name":  "Smith",
    "info": {
        "bio":         "Eco-warrior and defender of the weak",
        "age":         25,
        "interests": [ "dolphins", "whales" ]
    },
    "join_date": "2014/05/01"
}

 

尽管原始的user对象很复杂,但它的结构和对象的含义已经被完整的体现在JSON中了,在Elasticsearch中将对象转化为JSON并做索引要比在表结构中做相同的事情简单的多。

 

功能相关:

5.document :类比成数据库中的一行数据(一个元组)

Elasticsearch是面向文档(document oriented)的,这意味着它可以存储整个对象或文档(document)。然而它不仅仅是存储,还会索引(index)每个文档的内容使之可以被搜索。在Elasticsearch中,你可以对文档(而非成行成列的数据)进行索引、搜索、排序、过滤。这种理解数据的方式与以往完全不同,这也是Elasticsearch能够执行复杂的全文搜索的原因之一。

ELasticsearch使用Javascript对象符号(JavaScript Object Notation),也就是JSON,作为文档序列化格式。

6.文档元数据:包括_index,_type,_id

7.type:文档代表的对象的类,类比数据库中的表。表是行的集合,type是文档(document)的集合。

8.index:文档存储的地方,类比一个数据库。库是表的集合,index是type的集合。

9.id:文档的唯一标识

架构相关:

10.主要分片(primary shard):用来存放数据的主本

11.复制分片(replica shard):用来存放数据的副本

二、基础操作

1.下载ES和Kibana的安装包。

ES:https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.2.0.zip

Kibana:https://artifacts.elastic.co/downloads/kibana/kibana-5.2.0-windows-x86.zip

2.下载安装1.8.0_73及以上版本的JDK

自己解决

3.启动ES和Kibana

点击解压后的对应文件夹下的bin目录下的elasticsearch.bat和kibana.bat

4.进入操作地址,验证自己是否安装启动成功

ES地址:http://localhost:9200/?pretty

可以用来判断安装是否成功。

kibana地址:http://localhost:5601

用来操作ES和做数据可视化。

5.查看健康状况

进入本地的kibana服务主页

点击左侧导航栏的“Dev Tools”按钮

在Console框的左侧输入区输入:

GET _cat/health?v

输出的内容:

epoch      timestamp cluster       status node.total node.data shards pri relo init unassign pending_tasks max_task_wait_time active_shards_percent

1561536359 16:05:59  elasticsearch yellow          1         1      1   1    0    0        1             0                  -                 50.0%

6.索引操作

6.1 查看集群中有哪些索引

GET _cat/indices?v

输出:

health status index   uuid                   pri rep docs.count docs.deleted store.size pri.store.size

green  open   .kibana FmA7KbNYRleEj9L8x_y-FQ   1   1          1            0      6.3kb          3.1kb

6.2 创建索引:

PUT test_index?pretty

输出:

{

  "acknowledged": true,

  "shards_acknowledged": true

}

再次查看索引:

health status index      uuid                   pri rep docs.count docs.deleted store.size pri.store.size

green  open   .kibana    FmA7KbNYRleEj9L8x_y-FQ   1   1          1            0      6.3kb          3.1kb

green  open   test_index xcNf-RBbR2eFh0whxVgzVw   5   1          0            0      1.2kb           650b

发现多了一条索引信息,没错,它就是我们新创建的。

6.3 删除索引:

DELETE test_index?pretty

输出:

{

  "acknowledged": true

}

7.文档的增删改查(CRUD)

7.1创建文档:

PUT /yourindex/yourtype/yourid

{

    json数据

}

 

输出:

{

  "_index": "yourindex",

  "_type": "yourtype",

  "_id": "yourid",

  "_version": 1,

  "result": "created",

  "_shards": {

    "total": 2,

    "successful": 1,

    "failed": 0

  },

  "created": true

}

7.2 查询文档

GET /yourindex/yourtype/yourid

输出:

{

  "_index": "ecommerce",

  "_type": "product",

  "_id": "1",

  "_version": 1,

  "found": true,

  "_source": {

    "name": "gaolujie yagao",

    "desc": "gaoxiao meibai",

    "price": 30,

    "producer": "gaolujie producer",

    "tags": [

      "meibai",

      "fangzhu"

    ]

  }

}

7.3 替换文档

和创建一个,都使用PUT关键字,没有区别,相当于替换原来的文档。既然是替换,就是说需要一个完整的文档数据了。

PUT /yourindex/yourtype/yourid

{

    json数据

}

7.4 更新文档

POST /yourindex/yourtype/yourid/_update

{

    "doc":{

        "name":"good gaolujie yagao"

    }

}

7.5 删除文档

DELETE /yourindex/yourtype/yourid

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值