ElasticSearch学习1

news/2024/7/7 6:36:08 标签: elasticsearch, 搜索引擎, 学习

文章目录

    • 1. 其他工具
    • 2. 概述
      • 概念
      • 倒排索引
    • 3. 使用
      • 3.1 ElasticSearch-HelloWorld
        • 3.1.1 配置文件-关闭安全认证、开启跨域
        • 3.1.2 启动
        • 3.1.3 访问9200端口
        • 3.1.4 Rest访问约束规定
          • 概念
          • 测试
            • 获取 - ElasticSearch所有的索引库信息
            • 获取 - ElasticSearch健康信息
            • 创建库(索引)- 数版本退化到这个就是表
            • 创建库(索引)- 定义索引字段结构
            • 获取 - 索引信息
            • 新建文档 - 必须是_doc
            • 查询文档 - 通过ID
            • 修改文档
            • 查询文档 - 通过条件
      • 3.2 ElasticSearch-Head可视化Vue界面
        • Vue项目正常启动即可
          • 步骤1
          • 步骤2 - ElasticSearch设置跨域
          • 步骤3 - 重启ElasticSearch服务
          • 步骤4 - 刷新浏览器地址:http://localhost:9100/
          • 步骤5 - 新建索引(初学就先把ES当成数据库)
      • 3.3 Kibana - 可视化日志界面、日志各种图表分析展示 - 磁盘空间已经使用95%则不能打开Kibana页面
        • 配置
        • 解压、启动
        • 访问
        • 解决 - This Elastic installation has strict security requirements enabled that your current browser does not meet.
        • 使用
      • 3.4 IK分词器 - 中文分词
        • 概述
          • 简单使用
            • 1. 下载解压目录放置在ElasticSearch目录的plugin里面
            • 2. 重启ElasticSearch
            • 3. 查看是否加载成功
            • 4. 分词测试
            • 5. 有些词不被ik认为是一个单词,如【嗯星】被拆开了,所以我们需要自己定义什么单词为一个词语
            • 6. 重启ElasticSearch - 可见已经将【嗯星】作为单词进行分词

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 - 可见已经将【嗯星】作为单词进行分词

在这里插入图片描述

在这里插入图片描述


http://www.niftyadmin.cn/n/1657709.html

相关文章

ElasticSearch学习2 - 查询、修改

文章目录0. 修改索引大文本字段支持排序1. 查询1.1 字段检索-match1.2 查询结果仅显示需要的字段-_source1.3 结果集进行排序-sort1.4 分页查询 - from从0开始、size每页行数1.5 多条件查询and-must1.6 多条件查询or-should1.7 否定-must_not1.8 结果集过滤-filter1.9 数组模糊…

《managed DirectX9 kick start:Graohics and Game Programming》

请问谁有电子的。呵呵 转载于:https://www.cnblogs.com/nanshouyong326/archive/2007/04/16/714975.html

Ubuntu Feisty怎么还不见Release啊!

从昨晚等到现在了,啊! 我要抓狂了! 我要抓狂了! 我要抓狂了! 我要抓狂了! 我要抓狂了! 我要抓狂了! 我要抓狂了! 我要抓狂了! 我要抓狂了! 我要抓…

SQL实现单表多科目排序

同学问我怎么在一个表内对多个科目的成绩进行排序,同时结果还要写回到数据库中.由于平时用的SQL太简单,人又太笨,以致于根本写不出来.于是到处搜索,还真搜索到了单表单科目排序同时更新的SQL句子.如果想看原文的话,点击这儿.于是对那里面的SQL进行了小小的修改,实现了我的目的.…

成功必备的八个心态

有这样的八个心态,等待你的必定是成功 成功必备的八个心态: 一、 积极的心态: 事物永远是阴阳同存,积极的心态看到的永远是事物好的一面,而消极的心态只看到不好的一面。积极的心态能把坏的事情变好,消极的心态会把好的…

一个简单的从豆瓣下载专辑封面的Python脚本

Amarok本身是自带从Amazon下载封面的功能的, 但是中文封面基本上都找不到,有点遗憾。 可不可以考虑写一个用来下载中文封面的脚本呢。 封面图片的来源可以是豆瓣、非非共享界或者卓越网等网站。 我只会C#,临时写了一个很简单的脚本表示一下基…

求命

这个五一本打算出游,但最终没去成了,就把一些老电影再看了一遍,感觉还挺不错哦,黄飞鸿4西域雄师里的对比感觉比前几部要幽默多了,救了比利后,黄飞鸿说“有什么比救别人一命更开心的呢?”&#x…

ASP.NET2.0服务器控件开发之实现事件 [转]

1. 事件基本概念  事件是当有动作发生或者状态改变时,类发出的信息或者通知。通常情况下,状态的发生或者改变由用户界面动作初始化,例如,单击按钮,或者由于其他的程序逻辑引起。产生事件的类或者说发送通知的类叫做事…