全文检索技术 - ElasticSearch01

ElasticSearch:

  1. 概述:
    • 什么是ElasticSearch:Elaticsearch,简称为es, es是一个开源的高扩展的分布式全文检索引擎,它可以近乎实时的存储、检索数据本身扩展性很好,可以扩展到上百台服务器,处理PB级别的数据。es也使用Java开发并使用Lucene作为其核心来实现所有索引和搜索的功能,但是它的目的是通过简单的RESTful API来隐藏Lucene的复杂性,从而让全文搜索变得简单
    • ElasticSearch 和 Solr对比:(面试中常见的面试题)
      • 分布式管理:Solr 利用 Zookeeper 进行分布式管理,而Elasticsearch 自身带有分布式协调管理功能;
      • 支持的格式:Solr 支持更多格式的数据,而Elasticsearch 仅支持json文件格式
      • 功能: Solr 官方提供的功能更多,而 Elasticsearch 本身更注重于核心功能,高级功能多有第三方插件提供
      • 表现:Solr 在传统的搜索应用中表现好于 Elasticsearch,但在处理实时搜索应用时效率明显低于 Elasticsearch
  2. ElasticSearch安装和启动:
    • 安装步骤:
      • 下载ES压缩包:注意的是ElasticSearch分为LinuxWindow版本 这里使用的是Windows版本 下载的官方地址
      • 安装ES服务:Window版的ElasticSearch的安装很简单,类似Windows版的Tomcat,解压开即安装完毕 目录结构如下:
        在这里插入图片描述
      • 使用前的步骤:修改elasticsearch配置文件:config/elasticsearch.yml,增加以下两句命令:允许elasticsearch跨越访问 方便以后的使用

        http.cors.enabled: true
        http.cors.allow‐origin: “*”

    • 启动服务:点击ElasticSearch下的bin目录下的elasticsearch.bat启动
      *
      在这里插入图片描述
    • 启动服务中需要注意的是:注意:9300tcp通讯端口,集群间和TCPClient都执行该端口,9200是http协议的RESTful接口 进行访问的时候使用9200端口 通过浏览器访问ElasticSearch服务器,看到如下返回的json信息,代表服务启动成功:
      在这里插入图片描述
    • 安装ES的图形化界面插件
      • 注意: ElasticSearch不同于Solr自带图形化界面,我们可以通过安装ElasticSearch的head插件,完成图形化界面的效果,完成索引数据的查看。elasticsearch-5-*以上版本安装head需要安装nodegrunt
      • 安装步骤:
        • 下载head插件:下载的地址
        • 将elasticsearch-head-master压缩包解压到任意目录 但是要和elasticsearch的安装目录区别开
        • 安装Node.js:下载Node.js 下载完成之后,双击安装程序 点击下一步就行 安装非常的简单
        • 将grunt安装为全局命令 ,Grunt是基于Node.js的项目构建工具,在cmd中使用如下命令:npm install ‐g grunt‐cli 执行完成之后输入npm installgrunt server命令 在浏览器中输入 http://localhost:9100 显示如下页面 表示安装成功:在这里插入图片描述
  3. ElasticSearch相关概念(术语)
    • 介绍:Elasticsearch是面向文档(document oriented)的,这意味着它可以存储整个对象或文档(document)。然而它不仅仅是存储,还会索引(index)每个文档的内容使之可以被搜索。在Elasticsearch中,你可以对文档(而非成行成列的数据)进行索引、搜索、排序、过滤 这样的结构就像是传统的关系型数据库的结构:

      Relational DB ‐> Databases ‐> Tables ‐> Rows ‐> Columns 关系型数据库
      Elasticsearch ‐> Indices ‐> Types ‐> Documents ‐> Fields ElasticSearch

    • ElasticSearch中的概念:
      • 索引:index 一个索引就是一个拥有几分相似特征的文档的集合
      • 类型:type 在一个索引中,你可以定义一种或多种类型。一个类型是你的索引的一个逻辑上的分类/分区
      • 字段:Field 相当于是数据表的字段,对文档数据根据不同属性进行的分类标识
      • 映射:mapping mapping是处理数据的方式和规则方面做一些限制,如某个字段的数据类型、默认值、分析器、是否被索引等等;或者是说es 中数据的一些使用规则的设置也叫映射
      • 文档:document 一个文档是一个可被索引的基础信息单元,在es 中使用的是json类型 在一个index 或者是type中能存储多个文档。
      • 接近实时:NRT ES是一个接近试试的搜索平台,从索引一个文档直到这个文档被搜索到只有一个轻微的延时(通常是在1s之内)
      • 集群:cluster [ˈklʌstər]集群就是由一个或多个节点组织在一起,它们共同持有整个的数据,并一起提供索引和搜索功能。一个集群由一个唯一的名字标识,这个名字默认就是“elasticsearch”。一个节点只能通过指定某个集群的名字,来加入这个集群
      • 节点:node 节点是集群中的一个服务器 作为集群的一部分,它存储数据,参与集群的索引和搜索功能。和集群类似,节点也是由名字来标识
      • 分片和复制:shards&replicas 将索引划分成多份,这些份就叫做分片 而创建分片的一份或多份拷贝,这些拷贝叫做复制分片,或者直接叫复制
        • 使用分片 和 复制的原因:
          • 使用分片的原因:就是为了提高性能(吞吐量)
            • 允许你水平分割/扩展你的内容容量。
            • 允 许你在分片(潜在地,位于多个节点上)之上 进行分布式的、并行的操作,进而提高性能/吞吐量
          • 使用复制的原因:提高可用性
            • 在分片/节点失败的情况下,提供了高可用性。
              • 注意复制分片和原/主要(original/primary)分片不要置于同一节点上(要不复制就没有意义了)
  4. ElasticSearch的客户端操作:
    • ElasticSearch客户端使用方式:三种
      • 使用elasticsearch-head插件 上面已经安装过了
      • 使用elasticsearch提供的Restful接口直接访问
      • 使用elasticsearch提供的API进行访问
    • Postman下载与安装:
      *安装步骤: 非常的简单
      * 下载的官方地址
      * 安装注册即可 (免费注册)
      • 使用步骤:使用Postman工具进行Restful接口访问
        • ElasticSearch的接口语法 :curl ‐X<VERB> '<PROTOCOL>://<HOST>:<PORT>/<PATH>?<QUERY_STRING>' ‐d '<BODY>'
          • 参数详解:
            在这里插入图片描述
        • 创建index 和 mapping: 在创建index的时候进行mapping的创建
          在这里插入图片描述
        • 在创建index之后在创建mapping: 先使用put 方法创建一个索引 在使用post方法设置mapping信息
          在这里插入图片描述
        • 删除索引index: 在这里插入图片描述
        • 创建文档document:
          在这里插入图片描述
        • 修改文档document在这里插入图片描述
        • 删除文档document:在这里插入图片描述
        • 根据id进行文档的查询:(这里的id 是文档真正的_id 不是id域中的id值)在这里插入图片描述
        • 使用querystring进行查询:(就像是Lucene中的QueryParse一样 先进行分词 在进行查询)在这里插入图片描述
  5. IK 分词器和ElasticSearch集成使用
    • ES中存在的问题:就是和 Lucene是一致的 使用标准的分析器 对中文的支持不好(会将中文的每一个字进行分词)
    • 解决方式:ElasticSearch集成IK分词器(插件)
      • IK分词器下载安装:
        • 下载:下载地址
        • 直接解压到elasticsearch-5.6.8\plugins就行
        • 重新启动ES服务器即可
      • 使用:
        • IK提供了两个分词算法ik_smart 和 ik_max_word 其中 ik_smart 为最少切分,ik_max_word为最细粒度划分
        • 使用方式和标准的分析器一致
  6. ElasticSearch集群
    • 节点的配置:ES进行集群的搭建非常的简单 不需要使用第三方工具 只要简单的配置即可 即修改config\elasticsearch.yml配置文件 且 将data文件目录进行删除

      #节点的配置信息:
      #集群名称,保证唯一
      cluster.name: my‐elasticsearch
      #节点名称,必须不一样
      node.name: node‐1
      #必须为本机的ip地址
      network.host: 127.0.0.1
      #服务端口号,在同一机器下必须不一样
      http.port: 9200
      #集群间通信端口号,在同一机器下必须不一样
      transport.tcp.port: 9300
      #设置集群自动发现机器ip集合
      discovery.zen.ping.unicast.hosts: [“127.0.0.1:9300”,“127.0.0.1:9301”,“127.0.0.1:9302”]

    • 使用elasticsearch-header查看集群情况在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

上山打卤面

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值