学习ES的笔记、全文检索、倒排索引、Lucene、ik中文分词器、Kibana使用DevTools

更新时间:2023-06-20 03:36:34 阅读: 评论:0

学习ES的笔记、全⽂检索、倒排索引、Lucene、ik中⽂分词器、Kibana使⽤
archeDevTools
⽂章⽬录
感悟
学习即是⼀个开拓的过程,也是⼀个重构的过程
新接触的单词
metric adj.公制的;⽶制的;公尺的
n.度量标准
stats 统计
blog n.博客;部落格;⽹络⽇志
vi.写博客
vt.写...博客
incident 事件
Archive 美 /ˈɑːrkaɪv/ n.档案馆,档案⽂件;vt.把...存档
caution 英 /ˈkɔːʃn/  n.⼩⼼,谨慎;警告,警⽰  vt.警告
cablevision>胸罩英文// providence 天意;  sparrow n. ⿇雀;矮⼩的⼈
// eventually adv.最后,
// thine 你的
莎⼠⽐亚的诗:
This above all: to thine lf be true
最重要的是:对⾃⼰忠实
There is nothing either good or bad, but thinking makes it so
事情本没有好与坏之分,只是被思想认为是那样
There’s a special providence in the fall of a sparrow
⼀只⿇雀的死是有特殊的天意的
No matter how dark long, may eventually in the day arrival最终;
⽆论天⿊有多长,⽩昼终将到来
知识点⼀:ES是什么?
1. ES全称ElasticSearch,是⼀个基于Lucene的搜索服务器。(其实就是对Lucene进⾏封装,提供了REST API的操作接⼝)
2. ElasticSearch作为⼀个⾼度可拓展的开源全⽂搜索和分析引擎,可⽤于快速的对⼤数据进⾏存储,搜索和分析。
3. ElasticSearch是基于Java开发的,并作为Apache许可条款下的开放源码发布,是⼀种流⾏的企业级搜索引擎。
4. 根据DB-Engines(数据库引擎)排名显⽰,ElasticSearch是最受欢迎的企业级搜索引擎。
5. ElasticSearch和Logstash(数据收集、⽇志解析引擎)、Kibana(分析和可视化平台)⼀起开发的。这三个产品被设计成⼀个集成解决⽅案,
称为“Elastic Stack”(以前被称为ELK技术栈)。
知识点⼆:ES基本概念
1. cluster:整个ES默认就是集群状态,整个集群是⼀个完整的、互备的数据
2. node:集群中的⼀个节点,⼀般只⼀个进程就是⼀个node
3. shard:分⽚,即使是⼀个节点也要将数据通过hash算法,分成多个⽚存放,默认是5⽚(7.0版本后改为1⽚)
4. index:相当于rdbms的databa(
5.x),对于⽤户来说是⼀个逻辑型数据库,虽然物理上会被分多个shard存放,也可能存放在多个node中。
6.x
7.x index相当于table
5. type:类似于rdbms的table,更像class对象,同⼀Json格式的数据集合。(
6.x只允许建⽴⼀个,
7.x版本舍弃)
6. document:类似于rdbms的row,⾯向对象的object
7. field:字段、属性
知识点三:1.1 什么是全⽂检索和Lucene?
1.针对互联⽹上的数据,可以使⽤http协议抓取html⽹页到本地,进⽽⽣成⼀个html⽂件;
2.针对关系型数据库中的数据,可以连接数据库读取表中的数据;
3.针对⽂件系统中的数据,可以通过流读取⽂件系统中的⽂件。
知识点四:1.2 什么是倒排索引,Lucene实现全⽂检索的流程是怎样?
倒排索引:创建索引是对语汇单元索引,通过词语找⽂档,这种索引的结构叫{倒排索引结构}。倒排索引结构也叫{反向索引结构},包括索引和⽂档两个部分,索引即词汇表,它的规模较⼩,⽽⽂档集合较⼤
Lucene实现全⽂检索的流程:
1.索引创建和搜索流程图: || 这⾥随后换成Flowchart ||
原始⽂档->创建索引-{1.获取⽂档-2.构建⽂档对象-3.分析⽂档(分词)-4.创建索引}->索引库(返回结果->)<-查询索引{1.⽤户查询接⼝-2.
创建查询-3.执⾏查询-4.渲染结果}
或者:
数据来源(Web/DB/File System/Manual Input)->获取数据->Index Documents(创建索引)->Index(索引库)->展⽰结果<-Search Index(搜索索引)<-Get Ur’s Query(⽤户查询)
总结:全⽂检索过程分为(创建)索引,(索引)搜索两个过程。
1.1创建索引=>就是为了⽤户⾼效搜索⽂件名和⽂件内容包括关键字的⽂件,索引存储在索引库(Index)中
1.2获得原始⽂档=>指的是需要索引和搜索的内容(互联⽹、数据库、磁盘等),必将涉及到[信息采集]过程,⽬的就是为了对原始内容
进⾏索引,针对不同的源数据,有不同的⽅法:
1. 互联⽹上的数据:可以是⽤http协议抓取html⽹页到本地,进⽽⽣成⼀个html⽂件
2. 数据库中的数据:可以连接数据读取表中的数据
3. 针对⽂件系统中的数据:可以通过流读取⽂件系统中的⽂件
最多的使⽤1,在互联⽹上的数据,采集信息使⽤的软件⼀般称为爬⾍或蜘蛛,也称为⽹络机器⼈。
⽹络爬⾍项⽬:Nutch、jsoup、Heritrix
1.3创建⽂档对象
获取原始内容的⽬的就是对了对其进⾏索引,在索引前需要将原始内容创建成⽂档(Document),⽂档
肯德基帅哥中包括⼀个⼀个的域(Field),域中存储内容。
Document和Field是有结构的:
Document中包含了多个Field,例如field_name、field_context、field_path、field_size等
★每个⽂档都有⼀个唯⼀的编号,就是⽂档ID
1.4分析⽂档
对域中的对内再进⾏分析,例如:进⾏提词、将字母转换为⼩写、去处标点符号、去除停⽤词(没有意义的单词)等过程⽣成最终的语汇单元,我们可以将语汇单元理解为⼀个⼀个的单词。
例如:Lucene is a Java full-text arch engine.Lucene is not a complete application,but rather a code library and API that can easily
be ud to add arch capabilities to applications.
从上边这个⽂档经过分析提取到了:lucene、java、full、sarch、engine、…
每个单词叫⼀个(Term),例如:⽂件名中的包含的apache,和⽂件内容中的apache是不同的term。这
⾥的Field和Term可以看成是Map<K,V>结构,域名(Field)可以看成K,Term可以看成V。
1.5创建索引
对所有⽂档分析得出的语汇单元进⾏索引,索引的⽬的是为了搜索,最终要实现只搜索被索引的语汇单元从⽽得到Document(⽂档)。
倒排索引:通过词语找⽂档,这种索引的结构叫{倒排索引}结构。
倒排索引结构也叫反向索引结构,包括索引和⽂档两部分,索引即词汇表,它的规模较⼩,⽽⽂档集合较⼤。
1.6查询索引
从索引库(Index)中进⾏搜索的过程。根据关键字找到索引,根据索引找到对应⽂档。从⽽找到要搜索的内容。
1.7⽤户查询接⼝
1.8创建查询
使⽤⽤户提供的关键字构建⼀个查询对象,查询对象中指定要查询的File⽂档域,查询关键字等,查询对象会⽣成具体的查询语法。
1.9执⾏查询
搜索索引过程:先根据⽤户提供的关键字,倒排索引按照fileName包含关键字的要求找出索引,根据索引找出⽂档链表。
例如:查找lucene;⽣成搜索语法fileName:lucene,搜索过程就是在索引上查找域为filename,并且关键字为lucene的Term,根据Term找到⽂档id列表。
2.0渲染结果
以⼀个友好的界⾯将查询结果展⽰给⽤户。⽐如搜索结果中将关键字⾼亮显⽰,百度提供的快照等。
以下只是个⼈见解leisuretime
做个了解:
1.ElasticSearch
为⽤户提供关键字查询的全⽂搜索功能,实现企业海量数据的处理分析的解决⽅案,在Hadoop出来之前使⽤的分析⼤数据的框架ELK,(ElasticSearch,Logstash,Kibana),这样ElasticSearch=>Hadoop+Hive的功能,Logstash=>Flume,Kibana=>图形化界⾯,BI⼯具
2.ElasticSearch特点
2.1天然分⽚,天然集群adapter
默认⾃带1份副本,默认5个分⽚(7.x之后为1个分⽚)
Master:承担了"协调"、"组合"的⼯作。流程:⾸先Master收到⽤户的请求,然后各个集群节点找到请求对应的那份分⽚数据,提交给Master,Master收集各个来⾃节点的分⽚数据后组合成完整的结果数据,响应给⽤户(返回给客户端)。
2.2天然索引
各个数据库对待索引的⼿法:
Hive:天然没索引,有索引没啥⽤
MySQL:需要什么现成加索引。
ElasticSearch:每⼀个字段都有索引,因此数据量的膨胀和冗余是⾮常重的。ElasticSearch⽆论是占⽤内存还是磁盘都是⼤户。
MySQL的索引结构:B+Tree,把Key变成了树形结构,数据的Value在最底层,通过Key的层层查询后才能找到最底层的Value。典型的"通过Key去找Value的"格式。
ElasticSearch的索引结构:[倒排索引]。
实践:使⽤Kibana - Dev Tools 调⽤ ES的 REST API:
安装Elasticarch版本是6.6
elasticarch-6.6.0
安装kibana的版本也是6.6
kibana-6.6.0-linux-x86_64
下载完zip包,放在服务器上,unzip到 your-es-root/plugins/ik
create plugin folder cd your-es-root/plugins/ && mkdir ik
unzip plugin to folder your-es-root/plugins/ik
GET _arch
{
"query": {
"match_all": {}
}
}
GET _cat/nodes?v
#green yello red
GET _cat/health?v
#查整个服务器⾥各个表的状态
GET /_cat/indices?v
#查询某个索引的分⽚情况
GET /_cat/shards/kibana_sample_data_ecommerce
GET /_cat/shards/movie_index0715
#指定ID添加新数据(document):
#    格式:PUT index/type/_id
#    特点:有就覆盖,没有就插⼊
#添加新数据(document):
PUT /movie_index0715/movie_type/1
{
"id":"1",
"name":"operation red a",
"doubanScore":8.5,
"actorList":[{"id":"1","name":"zhang yi"},
{"id":"2","name":"hai qing"},
{"id":"3","name":"zhang han yu"}
]
}
GET /movie_index0715/_arch
DELETE /movie_index0715
PUT /movie_index0715/movie_type/2
{
"id":2,
"name":"operation meigong river",
"doubanScore":8.0,
职场英语成绩查询
航空学校分数线"actorList":[{
"id":"3","name":"zhang han yu"
}]
}
PUT /movie_index0715/movie_type/3
{
欧洲廉价航空"id":"3",
"name":"incident red a",
"doubanScore":5.0,
"actorList":[{
"id":"4",
"name":"zhang chen"
}]
}
DELETE /movie_index0715/movie_type/3 GET /movie_index0715/_arch
POST /movie_index0715/movie_type
{
"id":"3",
"name":"incident red a",
"doubanScore":"5.0",
"actorList":[{
"id":"4",
"name":"zhang chen"
}]
}
#插⼊
#PUT 和 POST 区别
#PUT是幂等 POST是⾮幂等
#修改
# PUT修改全部字段覆盖
# POST可以只改动⼀个字段
POST /movie_index0715/movie_type/2/_update {
"doc":{
"doubanScore":"8.2"
}
缓解工作压力的方法}
#按条件查询
GET /movie_index0715/_arch

本文发布于:2023-06-20 03:36:34,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/78/995618.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:数据   查询   搜索
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图