ElasticSearch学习1

1. 其他工具

自身带有分布式管理
使用zookeeper分布式管理
工具
Lucene:信息检索工具包 - Java开源 - 非搜索引擎系统
ElasticSearch:基于Lucene做的方法增强以及封装 - 通过简单Restful API获取数据 - 仅支持JSON
Solr:基于Lucene全文搜索服务器-可独立运行在Tocmat、Jetty这些servlet服务器中 - 通过WebService API进行获取数据 - 数据支持JSON、XML、CSV等
ELK技术【日志数据分析】:ElasticSearch搜索、Logstash日志采集、Kibana数据分析以及可视化

2. 概述

概念

功能: 用于全文、结构化搜索以及分析

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

下载地址: https://www.elastic.co/cn/start

历史版本下载地址: https://www.elastic.co/cn/downloads/past-releases

在这里插入图片描述

收集、清洗数据
搜索、存储数据
分析、展示数据
ELK(日志分析架构技术栈)= 数据分析、日志采集
Logstash:ELK的中央数据流引擎-从不同目标(文件、数据存储、MQ)进行收集数据
ElasticSearch:基于Lucene做的方法增强以及封装的交互实时搜索平台框架
Kibana::ElasticSearchd的数据友好显示以及实时分析的功能 - 各种图表分析展示
概念
索引(indices):数据库
类型(types):库中的表
文档(documents)::表中的数据
ElasticSearch特点
1. 一个集群至少一个节点(ElasticSearch进程),
2. 创建一个索引(数据库)默认会创建5个分片,1个副本(复制分片),主分片与复制分片不会在同一个节点
3. 分片:包含Lucene索引、倒排索引的文件目录(不扫描全部文档,使得知道哪些文档包含特定的关键字,快速的全文搜索)

在这里插入图片描述

倒排索引

每个文档拆分成独立的单词、词条,创建一个包含所有不重复的词条的排序列表,列出每个词条出现在哪个文档

在这里插入图片描述

在这里插入图片描述



权重计算
在这里插入图片描述



在这里插入图片描述

3. 使用

3.1 ElasticSearch-HelloWorld

3.1.1 配置文件-关闭安全认证、开启跨域

ElasticSearch目录\config\elasticsearch.yml
在这里插入图片描述


ElasticSearch安装目录\config\elasticsearch.yml

# 关闭ssl访问


# 添加配置
http.cors.enabled: true
http.cors.allow-origin: "*"

3.1.2 启动

双击ElasticSearch目录\bin\elasticsearch.bat
在这里插入图片描述

在这里插入图片描述

3.1.3 访问9200端口

http://127.0.0.1:9200/
在这里插入图片描述

3.1.4 Rest访问约束规定

概念
methodurl地址描述
GETlocalost:9200/_cat/xxxx获取ElasticSearch很多的其他信息 - 通过kibana自己尝试一下
GETlocalost:9200/_cat/indices获取ElasticSearch所有的索引库信息
GETlocalost:9200/_cat/_health获取ElasticSearch健康信息
PUTlocalost:9200/索引名称创建索引,请求体为索引字段结构
GETlocalost:9200/索引名称获取索引信息
PUTlocalhost:9200/索引名称/_doc/文档id创建文档(指定文档id)
POSTlocalhost:9200/索引名称/_doc创建文档(随机文档id)
POSTlocalhost:9200/索引名称/_doc/文档id/_update修改文档
DELETElocalhost:9200/索引名称/删除索引(表)
DELETElocalhost:9200/索引名称/_doc/文档id删除文档
GETlocalhost:9200/索引名称/_doc/文档id查询文档通过文档id
POSTlocalost:9200/索引名称/_search查询所有数据
getlocalost:9200/索引名称/_search?q=字段:字段值查询所有数据
测试
获取 - ElasticSearch所有的索引库信息
get http://127.0.0.1:9200/_cat/indices

在这里插入图片描述

获取 - ElasticSearch健康信息
get http://127.0.0.1:9200/_cat/health

在这里插入图片描述

创建库(索引)- 数版本退化到这个就是表
put  http://127.0.0.1:9200/lrc_blog

在这里插入图片描述

创建库(索引)- 定义索引字段结构
http://127.0.0.1:9200/lrc_blog2

//请求体

{
  "mappings": {
    "properties": {
      "name": {
        "type": "text"
      },
      "age": {
        "type": "integer"
      },
      "birthday": {
        "type": "date"
      }
    }
  }
}

在这里插入图片描述

在这里插入图片描述

获取 - 索引信息
http://127.0.0.1:9200/lrc_blog2

在这里插入图片描述

新建文档 - 必须是_doc
put 127.0.0.1:9200/lrc_blog/_doc/1


{
  "title":"雪中悍刀行",
  "date":"2020-11-05",
  "content":"关于庙堂权争与刀剑交错的江湖"
}


在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述


查询文档 - 通过ID
get /lrc_blog/_doc/2

在这里插入图片描述

修改文档
post /lrc_blog/_doc/文档ID/_update


//请求体
{
    "doc": {
        "age": "1000",
        "name": "修改文档记录"
    }
}

在这里插入图片描述

在这里插入图片描述

文档修改成功
在这里插入图片描述

查询文档 - 通过条件


方式1

post http://127.0.0.1:9200/lrc_blog/_search

//请求体
{
    "query": {
        "multi_match" : {
            "query" : "科技",
            "fields" : ["title"]
        }
    }
}

在这里插入图片描述


方式2 - 精确匹配

get lrc_blog/_search?q=title:雪中悍刀行222

在这里插入图片描述


3.2 ElasticSearch-Head可视化Vue界面

下载地址: https://github.com/mobz/elasticsearch-head/releases

Vue项目正常启动即可

步骤1
//拉取项目
git clone git://github.com/mobz/elasticsearch-head.git
cd elasticsearch-head

//安装依赖
npm install

//启动head项目
npm run start

//打开浏览器
open http://localhost:9100/

可见显示未连接前端项目9100访问不了elasticSearch9200的东西,需要elasticSearch9200放开跨域,允许所有域名可访问
在这里插入图片描述

步骤2 - ElasticSearch设置跨域

ElasticSearch安装目录\config\elasticsearch.yml

# 关闭ssl访问


# 添加配置
http.cors.enabled: true
http.cors.allow-origin: "*"

在这里插入图片描述

步骤3 - 重启ElasticSearch服务
步骤4 - 刷新浏览器地址:http://localhost:9100/

在这里插入图片描述

步骤5 - 新建索引(初学就先把ES当成数据库)
概念
索引:数据库
类型:库中的表
文档::表中的数据

3.3 Kibana - 可视化日志界面、日志各种图表分析展示 - 磁盘空间已经使用95%则不能打开Kibana页面

配置

kibana安装目录\config\kibana.yml

//将Kibana界面改成中文显示
i18n.locale: "zh-CN"

在这里插入图片描述

解压、启动

Kibana安装目录\bin\kibana.bat

访问

http://localhost:5601/

解决 - This Elastic installation has strict security requirements enabled that your current browser does not meet.

禁用谷歌全部插件、我也不知道是哪个插件引起的,所有我要一个没任何浏览器的插件进行打开



装有很多插件的Edge浏览器
在这里插入图片描述



啥插件都没装的星愿浏览器
在这里插入图片描述

使用

在这里插入图片描述

3.4 IK分词器 - 中文分词

概述

作用: 即把一段中文或者别的划分城一个个的关键字,我们在搜索时候会把自己的信息进行分词,会把数据库中或者索引库中的数据进行分词,然后进行一个匹配操作,默认的中文分词是将每个字看成一个词,比如“我爱狂神”会被分为"我",“爱”,"狂”,"神”,这显然是不符合要求的,所以我们需要安装中文分词器k来解决这个问题。

下载: https://github.com/medcl/elasticsearch-analysis-ik/

IK分词算法
1. ik_smart:最小切分
2. ik_max_word:最细粒度切分
简单使用
1. 下载解压目录放置在ElasticSearch目录的plugin里面

在这里插入图片描述

在这里插入图片描述

2. 重启ElasticSearch

在这里插入图片描述

3. 查看是否加载成功

在这里插入图片描述

elasticsearch-plugin list

在这里插入图片描述

4. 分词测试

在这里插入图片描述

GET _analyze
{
  "analyzer": "ik_smart",
  "text": "我爱中国,中国共产党,嗯星,csdn"
}


GET _analyze
{
  "analyzer": "ik_max_word",
  "text": "我爱中国,中国共产党,嗯星,csdn*"
}

在这里插入图片描述

在这里插入图片描述

5. 有些词不被ik认为是一个单词,如【嗯星】被拆开了,所以我们需要自己定义什么单词为一个词语

在这里插入图片描述

在这里插入图片描述

6. 重启ElasticSearch - 可见已经将【嗯星】作为单词进行分词

在这里插入图片描述

在这里插入图片描述


版权声明:本文为weixin_39651356原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。