Elasticsearch快速入门+【实战案例】

文章目录

  • ElasticSearch概述
  • ElasticSearch VS Solr 总结
  • ElasticSearch安装
  • 了解 ELK
  • 安装Kibana
  • ES核心概念
      • 概述
  • Rest风格说明
  • 索引的基本操作
  • 文档的基本操作(重点)
      • 基本操作
  • Elasticsearch结合Java
  • Elasticsearch实战

ElasticSearch概述

Elasticsearch是一个实时分布式搜索和分析引擎。它让你以前所未有的速度处理大数据成为可能。

  • Elaticsearch,简称为es, es是一个开源的高扩展的分布式全文检索引擎,它可以近乎实时的存储、检索数据;本身扩展性很好,可以扩展到上百台服务器,处理PB级别(大数据时代)的数据。Es也使用Java开发并使用Lucene作为其核心来实现所有索引和搜索的功能,但是它的目的是通过简单的RESTful API来隐藏Lucene的复杂性,从而让全文搜索变得简单。

据国际权威的数据库产品评测机构DB Engines的统计,在2016年1月,ElasticSearch已超过Solr等,成为排名第一的搜索引擎类应用。

ElasticSearch VS Solr 总结

  • 1、es基本是开箱即用,非常简单。Solr安装略微复杂一丢丢!
  • 2、Solr 利用 Zookeeper 进行分布式管理,而 Elasticsearch 自身带有分布式协调管理功能。
  • 3、Solr 支持更多格式的数据,比如JSON、XML、CSV,而 Elasticsearch 仅支持json文件格式。
  • 4、Solr 官方提供的功能更多,而 Elasticsearch 本身更注重于核心功能,高级功能多有第三方插件提供,例如图形化界面需要kibana友好
  • 5、Solr 查询快,但更新索引时慢(即插入删除慢),用于电商等查询多的应用;
    • ES建立索引快(即查询慢),即实时性查询快,用于facebook新浪等搜索。
    • Solr 是传统搜索应用的有力解决方案,但 Elasticsearch 更适用于新兴的实时搜索应用。
  • 6、Solr比较成熟,有一个更大,更成熟的用户、开发和贡献者社区, Elasticsearch相对开发维护者较少,更新太快,学习使用成本较高。

ElasticSearch安装

声明:JDK1.8 ,最低要求! ElasticSearch 客户端,界面工具!

  • Java开发,ElasticSearch 的版本和我们之后对应的 Java 的核心jar包! 版本对应!JDK 环境是正常!

下载

  • 官网:https://www.elastic.co/

了解 ELK

  • ELKElasticsearchLogstashKibana三大开源框架首字母大写简称。市面上也被成为Elastic Stack
  • Elasticsearch是一个基于Lucene、分布式、通过Restful方式进行交互的近实时搜索平台框架。类似百度、谷歌这种大数据全文搜索引擎的场景都可以使用Elasticsearch作为底层支持框架,可见Elasticsearch提供的搜索能力确实强大,市面上很多时候我们简称Elasticsearch为es
  • Logstash是ELK的中央数据流引擎,用于从不同目标(文件/数据存储/MQ)收集的不同格式数据,经过过滤后支持输出到不同目的地(文件/MQ/redis/elasticsearch/kafka等)。
  • Kibana可以将elasticsearch的数据通过友好的页面展示出来,提供实时分析的功能。
  • 市面上很多开发只要提到ELK能够一致说出它是一个日志分析架构技术栈总称,但实际上ELK不仅仅适用于日志分析,它还可以支持其它任何数据分析和收集的场景,日志分析和收集只是更具有代表性。并非唯一性。

安装Kibana

  • Kibana是一个针对Elasticsearch的开源分析及可视化平台,用来搜索、查看交互存储在Elasticsearch索引中的数据。使用Kibana,可以通过各种图表进行高级数据分析及展示。Kibana让海量数据更容易理解。它操作简单,基于浏览器的用户界面可以快速创建仪表板(dashboard)实时显示Elasticsearch查询动态。设置Kibana非常简单。无需编码或者额外的基础架构,几分钟内就可以完成Kibana安装并启动Elasticsearch索引监测。

Kibana 版本要和 Es 一致!

ES核心概念

  • 1、索引
  • 2、字段类型(mapping)
  • 3、文档(documents)

概述

集群,节点,索引,类型,文档,分片,映射是什么?

  • elasticsearch是面向文档,关系行数据库 和 elasticsearch 客观的对比!一切都是JSON!
  • elasticsearch(集群)中可以包含多个索引(数据库),每个索引中可以包含多个类型(表),每个类型下又包含多 个文档(行),每个文档中又包含多个字段(列)。
  • 物理设计:
    • elasticsearch 在后台把每个索引划分成多个分片,每分分片可以在集群中的不同服务器间迁移一个人就是一个集群!默认的集群名称就是 elaticsearch
  • 逻辑设计:
    • 一个索引类型中,包含多个文档,比如说文档1,文档2。 当我们索引一篇文档时,可以通过这样的一各顺序找到 它: 索引 ▷ 类型 ▷ 文档ID ,通过这个组合我们就能索引到某个具体的文档。 注意:ID不必是整数,实际上是个字符串。
  • 文档:就是我们的一条条数据
  • elasticsearch是面向文档的,那么就意味着索引和搜索数据的最小单位是文档
  • 类型
    • 类型是文档的逻辑容器,就像关系型数据库一样,表格是行的容器。 类型中对于字段的定义称为映射,
  • 索引(就是数据库)
    • 索引是映射类型的容器,elasticsearch中的索引是一个非常大的文档集合。索引存储了映射类型的字段和其他设置。 然后它们被存储到了各个分片上了。

Rest风格说明

一种软件架构风格,而不是标准,只是提供了一组设计原则和约束条件。它主要用于客户端和服务器交
互类的软件。基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制。

基本Rest命令说明:

method url地址 描述
PUT localhost:9200/索引名称/类型名称/文档id 创建文档(指定文档id)
POST localhost:9200/索引名称/类型名称 创建文档(随机文档id)
POST localhost:9200/索引名称/类型名称/文档id/_update 修改文档
DELETE localhost:9200/索引名称/类型名称/文档id 删除文档
GET localhost:9200/索引名称/类型名称/文档id 查询文档通过文档id
POST localhost:9200/索引名称/类型名称/_search 查询所有数据

索引的基本操作

  • 1、创建一个索引
PUT /索引名/~类型名~/文档id {请求体}
  • 2、数据类型
字符串类型
text 、 keyword
数值类型
long, integer, short, byte, double, float, half_float, scaled_float
日期类型
date
PUT /索引名/~类型名~/文档id {请求体}

文档的基本操作(重点)

基本操作

  • 1、添加数据
POST /db/user/1
{
  "username": "wmyskxz1",
  "password": "123456",
  "age": "22"
}
POST /db/user/2
{
  "username": "wmyskxz2",
  "password": "123456",
  "age": "22"
}
  • 2、获取数据 GET
GET /carroll/user/1
  • 3、修改数据
PUT /db/user/2
{
  "username": "wmyskxz3",
  "password": "123456",
  "age": "22"
}
  • 4、删除数据 DELETE
DELETE /db/user/1

Elasticsearch结合Java

Elasticsearch实战

今天由于时间仓促,后续我在继续补充,完善。

你知道的越多,你不知道的越多。
有道无术,术尚可求,有术无道,止于术。
如有其它问题,欢迎大家留言,我们一起讨论,一起学习,一起进步

你可能感兴趣的:(分布式基础知识)