Elasticsearch

Elasticsearch
1、 Elasticsearch是什么
•Elasticsearch 简称ES;
•Elasticsearch 是一个分布式的搜索和分析引擎,可以用于全文检索、结构化检索和分析,并能将这三者结合起来。基于Lucene 开发,现在是使用最广的开源搜索引擎之一,Wikipedia、Stack Overflow、GitHub 等都基于Elasticsearch 来构建自己的搜索引擎。
•通常跟Logstash Kibana一起使用,并称ELK;
2、 特性

  1. 安装方便:只需要jdk,没有太多依赖,集群搭建也很方便;
  2. JSON: 输入/输出格式为JSON,不需要定义Schema;
  3. RESTful:基本所有操作(索引、查询、甚至是配置)都可以通过HTTP 接口;
  4. 分布式:节点对外表现对等(每个节点都可以用来做入口);
  5. 准实时:从文档索引到可以被检索几乎实时;
  6. 多租户:可根据不同的用途分索引(可以理解为一个数据库系统建立多个库给不同的业务使用);
    3、 跟传统关系型数据库对比
    Elasticsearch 关系型数据库
    在这里插入图片描述
    4、 基本操作
  7. 增、删、改、查;
  8. 比较常用的查询:
    match_all:表示取出所有documents;
    {
    “match_all”: {}
    }
    term:用于精确查找,可用于数值、date、boolean值或not_analyzed string,当使用term时,不会对查询字符串进行分析
    {
    “term”: {
    “date”: “2014-09-01”
    }
    }
    terms 和term 类似,但是,terms 里可以指定多个值,只要doc满足terms 里的任意值,就是满足查询条件的,但terms 表示的是contains 关系,而不是equals关系
    {
    “terms”: {
    “tag”: [“search”, “full_text”, “nosql”]
    }
    }
    range:类比数据库查找的范围查找:
    {
    “range”: {
    “age”: {
    “gte”: 20,
    “lt”: 30
    }
    }
    }
    5、 分词
    分词是将文本转换成一系列单词(Term or Token)的过程,也可以叫文本分析,在ES里面称为Analysis;
    分词器是ES中专门处理分词的组件,英文为Analyzer;•3、在全文搜索(Fulltext Search)中,词(Term)是一个搜索单元,表示文本中的一个词,标记(Token)表示在文本字段中出现的词,由词的文本、在原始文本中的开始和结束偏移量、以及数据类型等组成。ElasticSearch 把文档数据写到倒排索引(Inverted Index)的结构中,倒排索引建立词(Term)和文档之间的映射,索引中的数据是面向词,而不是面向文档的。分析器(Analyzer)的作用就是分析(Analyse),用于把传入Lucene的文档数据转化为倒排索引,把文本处理成可被搜索的词。分析器由一个分词器(Tokenizer)和零个或多个标记过滤器(TokenFilter)组成,也可以包含零个或多个字符过滤器(Character Filter)。
    流程:
    在这里插入图片描述
    ElasticSearch引擎在收到用户的查询请求时,会使用分析器对查询条件进行分析,根据分析的结构,重新构造查询,以搜索倒排索引,完成全文搜索请求
    分词中的概念:
  9. 字符过滤器:映射字符过滤器,HTML标记字符过滤器,模式替换字符过滤器;
  10. 分词器:标准分词器,字母分词器,空格分词器,小写分词器,经典分词器;
  11. 标记过滤器:小写标记过滤器,停用词标记过滤器,词干过滤器,同义词过滤器;
  12. 分析器:标准分析器,简单分析器,空格分析器,停用词分析器,雪球分析器,自定义分析器
    6、 索引
  13. 索引(正向索引):
    通过字段查询数据库记录;
    通过url,链接到指定文章;
    查字典:通过拼音或偏旁部首查汉字;
    通过门牌号找到XX家等等;
  14. 倒排索引
    eg:问题:有X条记录:id=1,content=‘I love study.’Id=2,content=‘And study make me happy.’。。。想搜索‘study happy’。在传统关系型数据库中,用下面语法查询:SELECT id,contentFROM table_nameWHERE (column_name LIKE ‘study’ and column_name LIKE ‘happy’)
    在这里插入图片描述
    用ES搜索结果中可知记录2被命中2次,而记录1被命中1次,记录2比记录1要有更高的关注度;
  15. 应用场景
    A. 电商系统上的搜索;
    B. 运行系统中的日志搜索;
    C. 大数据量分析;
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值