ElasticSearch 全文检索

ElasticSearch

简称ES,基于Lucene全文检索引擎服务,支持分布式集群(数据横向扩展,分布式计算)

什么是全文检索:

全文检索是计算机程序通过扫描文章中的每一个词,对每一个词建立一个索引,指明该词在文章中出现的次数和位置。当用户查询时根据建立的索引查找,类似于通过字典的检索字表查字的过程。

全文检索(Full-Text Retrieval(检索))以文本作为检索对象,找出含有指定词汇的文本。全面、准确和快速是衡量全文检索系统的关键指标。

关于全文检索,我们要知道:

  1. 只处理文本。

  2. 不处理语义。

  3. 搜索时英文不区分大小写。

  4. 结果列表有相关度排序。

全文检索原理:
在这里插入图片描述

应用场景:
1.全文检索或者搜索服务
2.Nosql(ES中的数据单元为JSON)
3.构建ELK数据分析平台–完整的数据分析的解决方案
关键术语:
1.NRT(near real time)
接近实时–数据存储后一秒后才能检索到

Elasticsearch是一个接近实时的搜索平台。这意味着,从索引一个文档直到这个文档能够被搜索到有一个轻微的延迟(通常是1秒内)

2.Cluster(集群)
在这里插入图片描述
3.Node(节点):一个es服务
4.Index(索引):倒排序索引结构–索引到数据的一种映射关系
在这里插入图片描述

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

5.Type(类型)

在一个索引中,你可以定义一种或多种类型。一个类型是你的索引的一个逻辑上的分类/分区,其语义完全由你来定。通常,会为具有一组共同字段的文档定义一个类型。比如说,我们假设你运营一个博客平台并且将你所有的数 据存储到一个索引中。在这个索引中,你可以为用户数据定义一个类型,为博客数据定义另一个类型,当然,也可 以为评论数据定义另一个类型。类型类似于关系型数据库中Table的概念。

NOTE: 在5.x版本以前可以在一个索引中定义多个类型,6.x之后版本也可以使用,但是不推荐,在8.x版本中彻底移除一个索引中创建多个类型

6.Mapping(映射)

Mapping是ES中的一个很重要的内容,它类似于传统关系型数据中table的schema(结构),用于定义一个索引(index)中的类型(type)的数据的结构。 在ES中,我们可以手动创建type(相当于table)和mapping(相关与schema),也可以采用默认创建方式。在默认配置下,ES可以根据插入的数据自动地创建type及其mapping。 mapping中主要包括字段名、字段数据类型和字段索引类型

7.Document(文档)–es中的一条记录(json数据结构)

一个文档是一个可被索引的基础信息单元,类似于表中的一条记录。比如,你可以拥有某一个员工的文档,也可以拥有某个商品的一个文档。文档以采用了轻量级的数据交换格式JSON(Javascript Object Notation)来表示。

8.Field(字段或者域)–类似于Table中的Column
9.Replicas(复制)
在这里插入图片描述
10.Shard (分片)
环境搭建
准别工作:centos7 64位 es6.4.0 jdk1.8
1. 在官方网站下载ES
wget http://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.4.1.tar.gz

  1. 安装JDK(必须JDK1.8+)
    rpm -ivh jdk-8u181-linux-x64.rpm
    /注意:默认安装位置 /usr/java/jdk1.8.0_171-amd64/

  2. 配置环境变量
    vim /etc/profile
    在文件末尾加入:
    export JAVA_HOME=/usr/java/jdk1.8.0_171-amd64
    export PATH= P A T H : PATH: PATH:JAVA_HOME/bin

  3. 重载系统配置
    source /etc/profile

  4. 安装elasticsearche
    tar -zxvf elasticsearch-6.4.1.tar.gz

  5. elasticsearche的目录结构
    bin 可执行的二进制文件的目录
    config 配置文件的目录
    lib 运行时依赖的库
    logs modules 运行时日志文件
    plugins es中提供的插件

  6. 运行es服务
    在bin目录中执行 ./elasticsearch

     注意:root用户启动[2018-09-19T14:50:04,029][WARN ][o.e.b.ElasticsearchUncaughtExceptionHandler] [] uncaught exception in thread [main]org.elasticsearch.bootstrap.StartupException: java.lang.RuntimeException: can not run elasticsearch as root
    
  7. 不能以root用户身份启动

    a.在linux系统中创建新的组
    groupadd es

    b.创建新的用户es并将es用户放入es组中
    useradd es -g es

    c.修改es用户密码
    passwd es

    d.将root用户解压的文件移动到es用户目录中
    mv /root/elasticsearch-6.2.4 /home/es/

    f.改变文件的所有者
    chown -R es:es 当前es的安装目录(这里是:/home/es/elasticsearch)

  8. 登录es用户启动ES
    ./elasticsearch 启动ES

  9. 测试ES是否启动成功
    在命令终端中执行: curl http://localhost:9200 出现以下信息:
    {
    “name” : “xQK1cwT”,
    “cluster_name” : “elasticsearch”,
    “cluster_uuid” : “t7IYk7LKQ0mXcyyrdFWpLg”,
    “version” : {
    “number” : “6.2.4”,
    “build_hash” : “ccec39f”,
    “build_date” : “2018-04-12T20:37:28.497551Z”,
    “build_snapshot” : false,
    “lucene_version” : “7.2.1”,
    “minimum_wire_compatibility_version” : “5.6.0”,
    “minimum_index_compatibility_version” : “5.0.0”
    },
    “tagline” : “You Know, for Search”
    }

  10. 开启ES远程访问
    vim elasticsearch.yml 将原来network修改为以下配置:
    network.host: 0.0.0.0

  11. 启动时错误解决方案

    a.重新启动es出现如下错误
    ERROR: bootstrap checks failed[1]: max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]
    解决方案:

    切换到root用户修改

    vim /etc/security/limits.conf
    

    在最后面追加下面内容

    *               soft    nofile          65536
    *               hard    nofile          65536
    *               soft    nproc           4096
    *               hard    nproc           4096
    

    退出重新登录检测配置是否生效:

    ulimit -Hn
    ulimit -Sn
    ulimit -Hu
    ulimit -Su
    

    b.重新启动出现如下错误
    ERROR: max number of threads [3802] for user [chenyn] is too low,increase to at least [4096]
    解决方案:
    #进入limits.d目录下修改配置文件。
    vim /etc/security/limits.d/20-nproc.conf

    修改为 启动ES用户名 soft nproc 4096

    c.重新启动出现如下错误
    ERROR: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
    解决方案:
    vim /etc/sysctl.conf
    vm.max_map_count=655360
    #执行以下命令生效:
    sysctl -p

  12. 关闭网络防火墙
    systemctl stop firewalld
    systemctl disable firewalld

  13. 外部浏览器访问即可
    http://es的主机名:9200 出现如下信息说明安装成功:
    {
    “name” : “xQK1cwT”,
    “cluster_name” : “elasticsearch”,
    “cluster_uuid” : “t7IYk7LKQ0mXcyyrdFWpLg”,
    “version” : {
    “number” : “6.2.4”,
    “build_hash” : “ccec39f”,
    “build_date” : “2018-04-12T20:37:28.497551Z”,
    “build_snapshot” : false,
    “lucene_version” : “7.2.1”,
    “minimum_wire_compatibility_version” : “5.6.0”,
    “minimum_index_compatibility_version” : “5.0.0”
    },
    “tagline” : “You Know, for Search”
    }
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在线安装IK/拼音中文分词器

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页