内乡微网站建设,怎么样建设网站网站,.net最新网站开发,英文网站建设公司1、什么是Elasticsearch?
Elaticsearch#xff0c;简称为 ES#xff0c; ES 是一个开源的高扩展的分布式全文搜索引擎#xff0c; 是整个 ElasticStack 技术栈的核心。可以帮助我们从海量数据中快速找到需要的内容。
elasticsearch结合kibana、Logstash、Beats#xff0…1、什么是Elasticsearch?
Elaticsearch简称为 ES ES 是一个开源的高扩展的分布式全文搜索引擎 是整个 ElasticStack 技术栈的核心。可以帮助我们从海量数据中快速找到需要的内容。
elasticsearch结合kibana、Logstash、Beats也就是elastic stackELK。被广泛应用在日志数据分析、实时监控等领域 ES底层是基于LuceneLucene是一个Java语言的搜索引擎类库但是这个类库只支持java学习复杂。ES通过简单的RESTfulAPI来隐藏Lucene的复杂性从而让全文搜索变得简单。
2、为什么要有ES?
数据存储大致可分为结构化数据和非结构化数据
结构化数据是指可以使用关系型数据库表示和存储表现为二维形式的数据。一般特点是数据以行为单位一行数据表示一个实体的信息每一行数据的属性是相同的。
非结构化数据就是没有固定结构的数据。各种文档、图片、视频/音频等都属于非结构化数据。对于这类数据我们一般直接整体进行存储而且一般存储为二进制的数据格式。
从字面理解关系型数据库主要的功能是存储而不是搜索搜索只是顺便提供的功能。
而搜索引擎主要功能在于搜索存储只是过程不是目的。
关系型数据库进行精确搜索可以胜任但是针对模糊搜索性能就比较差了尤其是数据量大的时候。但是模糊搜索或者是相关性搜索才是人们用的更多的搜索所以才有了ES的存在。 底层实现
Mysql基于B树索引来实现快速检索ES则基于倒排索引对于文档搜索来说倒排索引在性能和空间上都有更加明显的优势。
3、ES的历史
2004年Shay Banon基于Lucene开发了Compass 2010年Shay Banon 重写了Compass取名为Elasticsearch。 官网地址: https://www.elastic.co/cn/ 相比与luceneelasticsearch具备下列优势 支持分布式可水平扩展 提供Restful接口可被任何语言调用
4、什么是倒排索引
正向索引像mysql中存储的形式他们基于一条数据的id创建索引当进行查询时先找到这一条数据然后判断数据中是否有想查询的内容
倒排索引数据库中记录的都是对文档内容分词后的词条针对词条创建索引并且记录词条所在文档的信息查询时现根据词条查询到文档id,然后获取到文档。
关于倒排索引理解可参考https://www.cnblogs.com/fengfengyang/p/16704685.html
比如用户要搜索华为手机可以将华为和手机进行分词分词后根据词条查询包含这两个词的文档id,然后根据文档id查询到文档最后经过去重就可以得到搜索结果。 倒排索引中包含两部分
1、词条字典记录所有的词条以及词条与倒排列表之间的关系会给词条创建索引提高查询和插入效率
2、倒排列表记录词条所在的文档id、词条出现频率、词条出现位置等信息 文档id:用于快速获取文档
词条频率 词条在文档中出现的次数用于评分频率高的可能搜索结果靠前 5、ES中的一些概念
ES与Mysql中概念比对 索引index相同类型的文档的集合比如商品信息索引订单信息索引人员信息索引
文档索引中存储的每一条数据叫做一条文档文档数据会被序列化为json格式后存储在elasticsearch中
字段文档中的字段也就是JSON中的每一个字段
映射索引中文档的约束包括字段类型的约束等
操作语句DSL,JSON风格的请求语句用来实现增删改查等操作