Elastic Stack-Elasticsearch使用介绍(一)

 一、前言

    Elasticsearch对外提供RESTful API,下面的演示我们主要使用Postman,进行一系列的Demo演示,这款工具方便各位前端大大或者对接口调试的神器;

    安装过于简单我不做过多介绍,推荐一些文章供大家参考安装:

    windows:

     View Code

    

   _bulk批量操作:

   

   _mget批量查询:

 

  如果type相同的话,可以使用ids,将id放入数组当中;

  批量操作这2个API还是很重要的,如果要一次性操作很多的数据一定要批量操作,尽可能减少网络开销次数,提升系统的性能;

三、倒排索引

  之前我写过一篇文章

  倒排索引就是单词到文档id的关系,如下图

 

  这个时候当我们使用搜索引擎查询包含Elasticsearch文档的,这个时候流程可能是这样的

  1.通过倒排索引获取包含Elasticsearch文档id为1;

  2.通过正排索引查找id为1的文档内容;

  3.拿到正确结果返回;

  这个时候我们可以来思考下倒排索引的结构了,当分词以后以我们了解到的数据结构来看的话B+树是一种高效的查询方式,整好符合分词以后的结构,如下图;

    

  当我们快速拿到我们想要的查询的分词的时候,我们这个时候就需要知道最重要的东西就是文档的id,这样确实可以拿到正确的结果,如下图

 

 但是这个时候我们再考虑下另外的情况,当我们在淘宝搜索一个物品的时候他有一个高亮显示,这个时候我们上面的情况就满足不了我们了,我们就需要在倒排索引列表中加入分词位置信息和偏移长度,这个时候我们就可以做高亮显示;

 后面又来一种情况,随着文档的扩大,我们当用搜索引擎去查询的时候会有很多结果,我们需要优先显示相近的,这个时候有需要另外一个字段就是词频,记录在文档中出现的次数,这个时候就满足可能出现的所有情况了,结构入下图

 

 明白整体的结构,你就知道为什么搜索引擎可以快速查询出我们要想要的结果来了,是不是很满足,那就点个关注吧!!哈哈!!当然内部有很多很多优化这个我们暂时就先不要管了!!

四、分词器

 分词器组成

 分词:按照某种规则将整体变成部分,在Elasticsearch中分词的组件是分词器(Analyzer),组成如下:

 1.Character Filters: 针对原始文本进行处理,有点类似正则过滤的意思;

 2.Tokenizer:按照指定规则进行分词;

 3.Token Filters:将分好的词再次粉装转化;

 分词器API

 Elasticsearch给我们提供分词API就是_analyze,作用就是为了测试是否能按照我们想要的结果进行分词,简单的演示下怎么使用:

 

 看一下返回结果,每个token里面都包含我们说的倒排索引内所有字段,这个type含义我不是很清楚,但是无伤大雅,另外还可以指定索引进行分词,默认为standard分词器:

 

分词器类型

1.standard

默认分词器,按词切分,支持多语言,字母转化为小写,分词效果太多JSON返回的过长不方便截图,总体来说对中文支持不是很好,分成一个字一个字,毕竟老外写的;

2.simple

按照非字母切分,字母转化为小写;

3.whitespace

按照空格切分;

4.stop

与simple相比增加了语气助词区分,例如then、an、的、得等;

5.keyword

不分词;

6.pattern

通过正则表达式自定义分割符,默认\W+,非兹磁的符号作为分隔符;

7.language

语言分词器,内置多种语言;

以上都是自带分词器,对中文的支持都不是很好,接下来我们看下有哪些中文分词器:

50000+
5万行代码练就真实本领
17年
创办于2008年老牌培训机构
1000+
合作企业
98%
就业率

联系我们

电话咨询

0532-85025005

扫码添加微信