ElasticSearch全文详解及具体配置

本文详细介绍了ElasticSearch的全文检索基础,包括什么是全文检索和相关概念。接着讲解了ElasticSearch的基本概念、与Solr的对比,以及如何安装和配置ElasticSearch,包括开启远程连接。此外,文章还涉及了IK分词器的安装和使用,以及Kibana的下载安装和基本使用。最后,文章探讨了ElasticSearch的编程操作,包括创建索引、映射、文档操作和查询操作,并介绍了Spring Data ElasticSearch的简介和聚合查询。
摘要由CSDN通过智能技术生成

一、全文检索基础

1.什么是全文检索

将非结构化数据中的一部分信息提取出来,重新组织,使其变得有一定结构,然后对此有一定结构的数据进行搜索,从而达到搜索相对较快的目的。这部分从非结构化数据中提取出的然后重新组织的信息,我们称之索引

例如:字典。字典的拼音表和部首检字表就相当于字典的索引,对每一个字的解释是非结构化的,如果字典没有音节表和部首检字表,在茫茫辞海中找一个字只能顺序扫描。然而字的某些信息可以提取出来进行结构化处理,比如读音,就比较结构化,分声母和韵母,分别只有几种可以一一列举,于是将读音拿出来按一定的顺序排列,每一项读音都指向此字的详细解释的页数。我们搜索时按结构化的拼音搜到读音,然后按其指向的页数,便可找到我们的非结构化数据——也即对字的解释

这种先建立索引,再对索引进行搜索的过程就叫全文检索(Full-text Search)

虽然创建索引的过程也是非常耗时的,但是索引一旦创建就可以多次使用,全文检索主要处理的是查询,所以耗时间创建索引是值得的。

2.相关概念

  1. 索引库
    索引库就是存储索引的保存在磁盘上的一系列的文件。里面存储了建立好的索引信息以及文档对象

在这里插入图片描述

一个索引库相当于数据库中的一张表

  1. document对象

    获取原始内容的目的是为了索引,在索引前需要将原始内容创建成文档(Document),文档中包括一个一个的域(Field),域中存储内容。每个文档都有一个唯一的编号,就是文档id

    document对象相当于表中的一条记录

  2. field对象

    如果我们把document看做是数据库中一条记录的话,field相当于是记录中的字段。field是索引库中存储数据的最小单位。field的数据类型大致可以分为数值类型和文本类型,一般需要查询的字段都是文本
    类型的,field的还有如下属性:

    • 是否分词:是否对域的内容进行分词处理。前提是我们要对域的内容进行查询

    • 是否索引:将Field分析后的词或整个Field值进行索引,只有索引方可搜索到

      比如:商品名称、商品简介分析后进行索引,订单号、身份证号不用分词但也要索引,这些将来都
      要作为查询条件

    • 是否存储:将Field值存储在文档中,存储在文档中的Field才可以从Document中获取 比如:商品
      名称、订单号,凡是将来要从Document中获取的Field都要存储

    • term对象 从文档对象中拆分出来的每个单词叫做一个Term,不同的域中拆分出来的相同的单词是不同的term。term中包含两部分一部分是文档的域名,另一部分是单词的内容。term是创建索引的关键词对象

二、ElasticSearch简介

2.1 什么是ElasticSearch

Elaticsearch,简称为es, es是一个开源的高扩展的分布式全文检索引擎,它可以近乎实时的存储、检索数据;本身扩展性很好,可以扩展到上百台服务器,处理PB级别的数据。es也使用Java开发并使用Lucene作为其核心来实现所有索引和搜索的功能,但是它的目的是通过简单的RESTful API来隐藏Lucene的复杂性,从而让全文搜索变得简单

2.2 ElasticSearch对比Solr

  • Solr 利用 Zookeeper 进行分布式管理,而 Elasticsearch 自身带有分布式协调管理功能
  • Solr 支持更多格式的数据,而 Elasticsearch 仅支持json文件格式
  • Solr 官方提供的功能更多,而 Elasticsearch 本身更注重于核心功能,高级功能多有第三方插件提
  • Solr 在传统的搜索应用中表现好于 Elasticsearch,但在处理实时搜索应用时效率明显低于Elasticsearch

三、Elasticsearch 安装

采用docker安装

  1. docker镜像下载
docker pull elasticsearch:5.6.8
  1. 安装es容器
docker run -di --name=kkb_es -p 9200:9200 -p 9300:9300 elasticsearch:5.6.8

9200端口(Web管理平台端口) 9300(服务默认端口)

  1. 开启远程连接
    elasticsearch从5版本以后默认不开启远程连接,程序直接连接会报错

我们需要修改es配置开启远程连接
登录容器

docker exec -it kkb_es /bin/bash

进去config目录

cd config

修改elasticsearch.yml文件

若出现vi命令无法识别,则安装该编辑器
设置apt下载源

docker cp ~/sources.list kkb_es:/etc/apt/sources.list

安装vim编辑器

apt-get update
apt-get install vim

安装好之后就可以修改elasticsearch.yml配置文件了

http.host: 0.0.0.0

transport.host: 0.0.0.0
#集群的名称
cluster.name: my-application
#跨域配置
http.cors.enabled: true
http.cors.allow-origin: "*"
network.host: 192.168.249.4

配置完毕之后退出容器,重启该容器

docker restart kkb_es
  1. 系统参数配置
    因为elasticsearch在启动时会比较占据资源,所以将虚拟机进行系统调优开放更多的资源

修改vi /etc/security/limits.conf,追加如下内容

* soft nofile 65536
* hard nofile 65536

修改vi /etc/sysctl.conf,追加内容

vm.max_map_count=655360

执行下面命令,使修改后的内核参数生效

sysctl -p

重启虚拟机,再启动容器,即可远程访问

reboot

在这里插入图片描述

四、ElasticSearch的客户端操作

IK分词器

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

安装

  1. 下载地址https://github.com/medcl/elasticsearch-analysis-ik/releases
    将ik分词器上传到服务器.解压并改名为ik
unzip elasticsearch-analysis-ik-5.6.8.zip
mv elasticsearch ik

将ik目录拷贝到docker容器的plugins目录下

docker cp ./ik kkb_es:/usr/share/elasticsearch/plugins
  1. 测试
    访问 : http://192.168.249.4:9200/_analyze?analyzer=ik_smart&pretty=true&text=我是程序员 出现如下页面

在这里插入图片描述

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

    比如会将“中华人民共和国人民大会堂”拆分为“中华人民共和国、中华人民、中华、华人、人民共和国、人民、共和国、大会堂、大会、会堂等词语。

  • ik_smart:会做最粗粒度的拆分

    比如会将“中华人民共和国人民大会堂”拆分为中华人民共和国、人民大会堂。

Kibana使用

Kibana 是一款开源的数据分析和可视化平台,它是 Elastic Stack 成员之一,设计用于和 Elasticsearch协作。您可以使用 Kibana 对 Elasticsearch 索引中的数据进行搜索、查看、交互操作。您可以很方便的利用图表、表格及地图对数据进行多元化的分析和呈现

Kibana 可以使大数据通俗易懂。它很简单,基于浏览器的界面便于您快速创建和分享动态数据仪表板来追踪 Elasticsearch 的实时数据变化

下载安装

这里使用docker安装

  1. 镜像安装
docker pull docker.io/kibana:5.6.8
  1. 安装kibana容器
docker run -it -d -e ELASTICSEARCH_URL=http://192.168.249.4:9200 --name kibana -p 5601:5601 kibana:5.6.8

ELASTICSEARCH_URL=http://192.168.249.4:9200:是指链接的es的地址
restart=always:每次服务都会重启,也就是开启启动
5601:5601:端口号

  1. 测试
    访问http:192.168.249.4:5601如下图所示

在这里插入图片描述

Kibana使用

Kibana具体使用可以查看其他文档࿰

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值