ElasticSearch介绍

目录标题

  • 一、ElasticSearch概述
    • 索引(Index)
    • 类型(Type)
    • 文档(Document)
    • 字段(Field)
    • 映射(Mapping)
  • 二、软件安装
    • 1、ElasticSearch安装
      • windows环境安装
    • 2、kibana安装
    • 3、ik分词器安装
      • IK分词器简介
      • IK分词器的安装
    • 4、引入ES依赖

一、ElasticSearch概述

Elasticsearch (简称ES)是一个分布式、高扩展、高实时的、RESTful 风格的搜索与数据分析引擎。它能很方便的使大量数据具有搜索、分析和探索的能力。充分利用Elasticsearch的水平伸缩性,能使数据在生产环境变得更有价值。Elasticsearch 的实现原理主要分为以下几个步骤,首先用户将数据提交到Elasticsearch 数据库中,再通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据,当用户搜索数据时候,再根据权重将结果排名,打分,再将返回结果呈现给用户。

Elasticsearch是面向文档型数据库,一条数据在这里就是一个文档,用JSON作为文档序列化的格式,比如下面这条用户数据:

{
    "name" :     "John",
    "sex" :      "Male",
    "age" :      25,
    "birthDate": "1990/05/01",
    "about" :    "I love to go rock climbing",
    "interests": [ "sports", "music" ]
}

用Mysql这样的数据库存储就会容易想到建立一张User表,有各个字段等,在ElasticSearch里这就是一个文档,当然这个文档会属于一个User的类型,各种各样的类型存在于一个索引当中。这里有一份简易的将Elasticsearch和关系型数据术语对照表:
ElasticSearch介绍_第1张图片

索引(Index)

一个索引就是一个拥有几分相似特征的文档的集合。比如说,你可以有一个客户数据的索引,另一个产品目录的索引,还有一个订单数据的索引。一个索引由一个名字来标识(必须全部是小写字母),并且当我们要对这个索引中的文档进行索引、搜索、更新和删除的时候,都要使用到这个名字。在一个集群中,可以定义任意多的索引。

能搜索的数据必须索引,这样的好处是可以提高查询速度,比如:新华字典前面的目录就是索引的意思,目录可以提高查询速度。

Elasticsearch索引的精髓:一切设计都是为了提高搜索的性能。

类型(Type)

在一个索引中,你可以定义一种或多种类型。

一个类型是你的索引的一个逻辑上的分类/分区,其语义完全由你来定。通常,会为具有一组共同字段的文档定义一个类型。不同的版本,类型发生了不同的变化
ElasticSearch介绍_第2张图片

文档(Document)

一个文档是一个可被索引的基础信息单元,也就是一条数据

比如:你可以拥有某一个客户的文档,某一个产品的一个文档,当然,也可以拥有某个订单的一个文档。文档以JSON(Javascript Object Notation)格式来表示,而JSON是一个到处存在的互联网数据交互格式。

在一个index/type里面,你可以存储任意多的文档。

字段(Field)

相当于是数据表的字段,对文档数据根据不同属性进行的分类标识。

映射(Mapping)

mapping是处理数据的方式和规则方面做一些限制,如:某个字段的数据类型、默认值、分析器、是否被索引等等。这些都是映射里面可以设置的,其它就是处理ES里面数据的一些使用规则设置也叫做映射,按着最优规则处理数据对性能提高很大,因此才需要建立映射,并且需要思考如何建立映射才能对性能更好。

二、软件安装

1、ElasticSearch安装

下载软件地址:

https://www.elastic.co/cn/downloads/past-releases#elasticsearch

选择7.8版本即可,其它elastic stack也可以在这里下载。
ElasticSearch介绍_第3张图片下载对应操作系统平台的版本:
ElasticSearch介绍_第4张图片

windows环境安装

解压elasticsearch-7.8.0-windows-x86_64.zip,目录结构:
ElasticSearch介绍_第5张图片
解压完成后进入bin目录,双击运行elasticsearch.bat
ElasticSearch介绍_第6张图片
测试访问: http://localhost:9200/
ElasticSearch介绍_第7张图片
注意事项一:

ElasticSearch是使用java开发的,且本版本的ES需要JDK版本要是1.8以上,所以安装ElasticSearch之前保证JDK1.8+安装完毕,并正确的配置好JDK环境变量,否则启动ElasticSearch失败。

注意事项二

出现闪退,通过路径访问发现“空间不足”

修改config/jvm.options文件的22行23行,把2改成1,让Elasticsearch启动的时候占用1个G的内存。

-Xmx512m:设置JVM最大可用内存为512M。

-Xms512m:设置JVM初始内存512m。此值可设置与-Xmx相同,以避免每次垃圾回收完成后JVM重新分配内存。

2、kibana安装

elasticsearch服务是一个restful风格的http服务。我们可以采用postman作为客户端来进行操作,elastic stack官方也给我们提供了kibana来进行客户端操作,这个相比postman要友好一点,因为里面有些自动补全的代码提示
下载地址: https://www.elastic.co/cn/downloads/past-releases/kibana-7-8-0
ElasticSearch介绍_第8张图片解压文件:
ElasticSearch介绍_第9张图片
进入到config目录,修改kibana.yml文件:

Kibana默认端口:5601
在这里插入图片描述
Kibana连接elasticsearch服务器的地址:elasticsearch.url: [“http://localhost:9200”]
ElasticSearch介绍_第10张图片修改kibana配置支持中文:i18n.locale: “zh-CN”
ElasticSearch介绍_第11张图片
运行访问
执行kibana-7.8.0-windows-x86_64\bin\kibana.bat
ElasticSearch介绍_第12张图片
开始访问:[http://127.0.0.1:5601](
ElasticSearch介绍_第13张图片
ElasticSearch介绍_第14张图片

3、ik分词器安装

IK分词器简介

IKAnalyzer是一个开源的,基于Java语言开发的轻量级的中文分词工具包。从2006年12月推出1.0版开始,IKAnalyzer已经推出 了3个大版本。最初,它是以开源项目Lucene为应用主体的,结合词典分词和文法分析算法的中文分词组件。新版本的IKAnalyzer3.0则发展为面向Java的公用分词组件,独立于Lucene项目,同时提供了对Lucene的默认优化实现。

IK分词器3.0的特性如下:

1)采用了特有的“正向迭代最细粒度切分算法“,具有60万字/秒的高速处理能力。

2)采用了多子处理器分析模式,支持:英文字母(IP地址、Email、URL)、数字(日期,常用中文数量词,罗马数字,科学计数法),中文词汇(姓名、地名处理)等分词处理。

3)对中英联合支持不是很好,在这方面的处理比较麻烦.需再做一次查询,同时是支持个人词条的优化的词典存储,更小的内存占用。

4)支持用户词典扩展定义。

5)针对Lucene全文检索优化的查询分析器IKQueryParser;采用歧义分析算法优化查询关键字的搜索排列组合,能极大的提高Lucene检索的命中率。

IK分词器的安装

1.下载:
GitHub仓库地址:https://github.com/medcl/elasticsearch-analysis-ik
下载地址: https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.8.0/elasticsearch-analysis-ik-7.8.0.zip

2.解压安装IK插件**
直接解压到plugins\ik\目录下,注意目录结构,解压后的zip不要放在plugins目录下
ElasticSearch介绍_第15张图片
3.重新启动ElasticSearch
4.测试
在kibana中测试:

测试分词器:

l ik_max_word:会将文本做最细粒度的拆分

ik_smart:会做最粗粒度的拆分,智能拆分
在这里插入图片描述ElasticSearch介绍_第16张图片

4、引入ES依赖

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-elasticsearch</artifactId>
    </dependency>

    <dependency>
        <groupId>com.atguigu</groupId>
        <artifactId>service-product-client</artifactId>
        <version>1.0-SNAPSHOT</version>
    </dependency>
</dependencies>

ElasticSearch介绍_第17张图片

你可能感兴趣的:(elasticsearch,大数据,搜索引擎)