【Elasticsearch】- elasticsearch简介与使用环境安装

x33g5p2x  于2022-06-01 转载在 ElasticSearch  
字(1.8k)|赞(0)|评价(0)|浏览(445)

elasticsearch基础介绍

简介

1. 是什么?

Elasticsearch 是一个分布式高扩展高实时搜索与数据分析引擎。

Elasticsearch是与名为Logstash的数据收集和日志解析引擎以及名为Kibana的分析和可视化平台一起开发的。这三个产品被设计成一个集成解决方案,称为“Elastic Stack”(以前称为“ELK stack”)。

2. 能干什么?

它能很方便的使大量数据具有搜索、分析和探索的能力。充分利用Elasticsearch的水平伸缩性,能使数据在生产环境变得更有价值。

Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。

Elasticsearch是分布式的,这意味着索引可以被分成分片,每个分片可以有0个或多个副本。每个节点托管一个或多个分片,并充当协调器将操作委托给正确的分片。再平衡和路由是自动完成的。相关数据通常存储在同一个索引中,该索引由一个或多个主分片和零个或多个复制分片组成。一旦创建了索引,就不能更改主分片的数量。

3. 实现原理

  1. 首先用户将数据提交到Elasticsearch 数据库中
  2. 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据
  3. 当用户搜索数据时候,再根据权重将结果排名,打分,再将返回结果呈现给用户。

Elasticsearch使用Lucene,并试图通过JSON和Java API提供其所有特性。它支持facetting和percolating,如果新文档与注册查询匹配,这对于通知非常有用。另一个特性称为“网关”,处理索引的长期持久性;例如,在服务器崩溃的情况下,可以从网关恢复索引。Elasticsearch支持实时GET请求,适合作为NoSQL数据存储,但缺少分布式事务。

Elasticsearch数据存储与关系型数据库的比较

Elasticsearch 是面向文档型数据库,一条数据在这里就是一个文档。

Elasticsearch数据存储与关系型数据库数据储存有以下联系:

Elasticsearch的安装

下载

Elasticsearch官网:https://www.elastic.co/cn/

Elasticsearch下载地址:https://www.elastic.co/cn/downloads/elasticsearch

从官网下载Elasticsearch压缩包,然后解压即可使用。

目录结构

Elasticsearch解压后的目录结构如下:

各目录的解释如下:

目录含义
bin可执行脚本目录
config配置目录
jdk内置 JDK 目录
lib类库
logs日志目录
modules模块目录
plugins插件目录

运行

解压后,进入bin目录,双击elasticsearch.bat运行。

Elasticsearch启动后会暴露两个端口:

  • 9300 端口为 Elasticsearch 集群间组件的通信端口
  • 9200 端口为浏览器访问的 http协议 RESTful 端口。

测试

在浏览器访问: http://localhost:9200/。

返回如下信息表示Elasticsearch安装启动成功:

RESTful

REST 指的是一组架构约束条件和原则。满足这些约束条件和原则的应用程序或设计就是 RESTful。 Web 应用程序最重要的 REST 原则是,客户端和服务器之间的交互在请求之间是无状态的。从客户端到服务器的每个请求都必须包含理解请求所必需的信息。如果服务器在请求之间的任何时间点重启,客户端不会得到通知。此外,无状态请求可以由任何可用服务器回答,这十分适合云计算之类的环境。客户端可以缓存数据以改进性能。

在 REST 样式的 Web 服务中,每个资源都有一个地址。资源本身都是方法调用的目标,方法列表对所有资源都是一样的。这些方法都是标准方法,包括 HTTP GET、POST、PUT、DELETE,还可能包括 HEAD 和 OPTIONS。

RESTful具备如下特点:

  • 每一个URI代表1种资源;
  • 客户端使用GET、POST、PUT、DELETE4个表示操作方式的动词对服务端资源进行操作:
    GET:用来获取资源,
    POST:用来新建资源(也可以用于更新资源),
    PUT:用来更新资源,
    DELETE:用来删除资源;
  • 通过操作资源的表现形式来操作资源;
  • 资源的表现形式是XML或者HTML;
  • 客户端与服务端之间的交互在请求之间是无状态的,从客户端到服务端的每个请求都必须包含理解请求所必需的信息。

相关文章