elasticsearch学习

介绍

Elasticsearch简介

Elasticsearch 是一个建立在全文搜索引擎 Apache Lucene™ 基础上的搜索引擎,可以说 Lucene 是 当今最先进,最高效的全功能开源搜索引擎框架。

用通俗的话理解就是:将不同服务器需要的数据,弄成一个文档,放到es中去,当我们去搜索的时候,就是去搜索文档。

es是一个非关系型数据库,和redis一样,redis是一个键值对的数据库,但是es是一个文档类型的数据库。

Elasticsearch的一般特性如下

Elasticsearch可扩展高达PB级的结构化和非结构化数据。(数据量越大效率越高)

Elasticsearch可以用来替代MongoDB和RavenDB等做文档存储。

Elasticsearch使用非标准化来提高搜索性能。

Elasticsearch是受欢迎的企业搜索引擎之一,目前被许多大型组织使用,如Wikipedia,The

Guardian,StackOverflow,GitHub等。

Elasticsearch是开放源代码,可在Apache许可证版本 2.0 下提供

为什么es不能直接代替数据库_Elastic

solr与elasticsearch的区别:
  • 二者安装都很简单;
  • Solr 利用 Zookeeper 进行分布式管理,而 Elasticsearch 自身带有分布式协调管理功能;
  • Solr 支持更多格式的数据,而 Elasticsearch 仅支持json文件格式;
  • Solr 官方提供的功能更多,而 Elasticsearch 本身更注重于核心功能,高级功能多有第三方插件提供;
  • Solr 在传统的搜索应用中表现好于 Elasticsearch,但在处理实时搜索应用时效率明显低于 Elasticsearch。
  • Solr 是传统搜索应用的有力解决方案,但 Elasticsearch 更适用于新兴的实时搜索应用。

下载

查版本

1.搜索spring

为什么es不能直接代替数据库_elasticsearch_02

为什么es不能直接代替数据库_Elastic_03

下载

我们主要是下载elk---- elasticsearch logstash kibana 根据上图的版本选择

https://www.elastic.co/cn/downloads/elasticsearch

点击past releases

上面的三个下载完了以后,还需下载 ik分时器 head插件

ik分时器

https://github.com/medcl/elasticsearch-analysis-ik找到版本,点击download,注意不要下载到源码,下载好的里面是有插件的。

什么是ik分时器:

  • 把一句话分词
  • 如果使用中文:推荐ik分时器
  • 两个分词算法:ik_smart(最少切分),ik_max_word(最细粒度划分)

和head插件https://github.com/mobz/elasticsearch-head 里面只要5.0.0版本的,下载即可。

elk开启
开启elasticsearch

解压,点击bin -> elasticsearch.bat

浏览器输入
localhost:9200 测试端口
you konw,for search就表示成功了
服务端口 9300

开启kibana

解压,点击bin -> kibana.bat 输入命令localhost:5601

开启head插件

解压,输入命令行 npm install-----> npm run start

输入9100端口 打开界面

如果出现未连接 说明存在跨域问题 在elasticsearch-7.6.2\config里面输入 #解决跨域的问题: http.cors.enabled: true http.cors.allow-origin: "*"

让elasticsearch就有分词功能 解压ik分时器 将里面的文件夹和jar包复制到elasticsearch-7.6.2\plugins里面,建一个ik文件夹

kibana测试
# 最少切分
GET _analyze
{
  "analyzer": "ik_smart",
  "text": "我是社会主义接班人"
}

# 最大切分
GET _analyze
{
  "analyzer": "ik_max_word",
  "text": "我是社会主义接班人"
}
实现对索引的增删改查

PUT	    localhost:9100/索引名称/类型名称/文档id	       创建文档(指定id)
POST	localhost:9100/索引名称/类型名称	            创建文档(随机id)
POST	localhost:9100/索引名称/文档类型/文档id/_update  修改文档
DELETE	localhost:9100/索引名称/文档类型/文档id	       删除文档
GET	    localhost:9100/索引名称/文档类型/文档id	       查询文档通过文档id
POST	localhost:9100/索引名称/文档类型/_search	    查询所有文档

#创建索引
PUT /userdb/user/1
{
 "id":1,
 "name":"老郭",
 "age":18,
 "sex":"女"
}

#修改索引 (记得加一个doc)   
POST /userdb/user/1/_update
{
 "doc":{
   "id":"1",
   "name":"小ge哥",
   "age":18,
   "sex":"男"
 }
}

#删除文档
DELETE /userdb/user/1

#查询所有文档
POST /userdb/user/_search

Logstash介绍

Logstash是一个开源数据收集引擎,具有实时管道功能 , 可以动态地将来自不同数据源的数据统一起来,并将数据标准化到你所选择的目的地。 Logstash作为Elasicsearch常用的实时数据采集引擎,可以采集来自不同数据源的数据,并对数据进行处理后输出到多种输出源,是Elastic Stack 的重要组成部分。

为什么es不能直接代替数据库_为什么es不能直接代替数据库_04

开始(在本地运行)

解压,在bin目录下面加入 mysql-connector-java-8.0.13.jar 这个jar包

再加入mysql_info.conf这个文件

输出到多种输出源,是Elastic Stack 的重要组成部分。

[外链图片转存中…(img-1vD4iH3A-1615859737135)]

开始(在本地运行)

解压,在bin目录下面加入 mysql-connector-java-8.0.13.jar 这个jar包

再加入mysql_info.conf这个文件

执行–> 在bin目录下面输入命令 logstash -f mysql_info.conf即可