ElasticsSearch基础概念和安装

ElasticSearch基础概念以及可视化界面安装

文章目录

  • ElasticSearch基础概念以及可视化界面安装
    • 1、引言
    • 2、基本概念
    • 3、倒排索引机制
      • 3.1、倒排索引
    • 4、使用docker安装ElasticSearch
      • 4.1、下载镜像文件
      • 4.2 、创建实例,启动es
    • 5.安装Kibana

1、引言

Elastic 的底层是开源库 Lucene。但是,你没法直接用 Lucene,必须自己写代码去调用它的 接口。Elastic 是 Lucene 的封装,提供了 REST API 的操作接口,开箱即用。 是一种搜索引擎,依靠分词等多种方式实现许多数据库不能实现的搜索场景。

REST API:天然的跨平台。

官方文档:ES官方文档

官方中文:官方中文版文档

社区中文:

https://es.xiaoleilu.com/index.html

http://doc.codingdict.com/elasticsearch/0/

2、基本概念

  • Index:索引,相当于关系数据库中的database概念,是一类数据的集合,是一个逻辑概念。
  • Type:类型,相当于数据库中的table概念,在6.0版本之前,一个Index中可以有多个type,7.0版本后彻底废弃多type,每个索引只能有一个type,即“ _doc”。这个概念就不用太关注了。
  • Document:文档,存储在ES中的主要实体叫文档,可以理解为关系型数据库中表的一行数据记录。每个文档由多个字段(field)组成。区别于关系型数据库的是,ES是一个非结构化的数据库,每个文档可以有不同的字段,并且有一个唯一标识。文档是Json格式的。
  • Field:字段,存在于文档中,字段是包含数据的键值对,可以理解为Mysql一行数据的其中一列。
  • Mapping:映射,是对索引库中的索引字段及其数据类型进行定义,类似于关系型数据库中的表结构。ES默认动态创建索引和索引类型的Mapping。
ElasticsearchMysql
索引(Index)库(Database)
类型(Type)表(Table)
文档(Document)行(Row)
字段(Field)列(Column)
映射(Mappings)表结构(schema)

3、倒排索引机制

提到搜索,人们会立刻联想到在百度、谷歌上输入关键词获取相关的内容的场景。但搜索不等于百度,大部分APP支持的站内搜索更加大行其道。

数据库是储存和查询数据的利器,那么数据库是否适合做搜索呢?答案是不合适。第一个原因是,当数据库存储了大量数据后,查询效率大幅降低。

但是有些搜索场景,数据库也是不支持的,例如在下表中,我们试图通过“中国足球”这个关键词搜索数据,数据库是无法查询到相应内容的。

idname
1中国男子足球队
2中国男子田径队
3中国女子排球队
4中国女子跳水队

3.1、倒排索引

什么是倒排索引?倒排索引也叫反向索引,我们通常理解的索引是通过key寻找value,与之相反,倒排索引是通过value寻找key,故而被称作反向索引。下面我们用一个简单的例子描述一下倒排索引的作用过程:假如现在有三份数据文档,内容分别是:

Doc 1:Java is the best programming languageDoc 2:PHP is the best programming languageDoc 3:Javascript is the best programming language

为了创建索引,ES引擎通过分词器将每个文档的内容拆成单独的词(称之为词条,或term),再将这些词条创建成不含重复词条的排序列表,然后列出每个词条出现在哪个文档,结果如下:

termDoc 1Doc 2Doc 3
Java
is
the
best
programming
language
PHP
Javascript

这种结构由文档中所有不重复的词的列表构成,对于其中每个词都有至少一个文档与与之关联。这种由属性值来确定记录的位置的结构就是倒排索引,带有倒排索引的文件被称为倒排文件。

将上表转为更直观的图片来展示倒排索引:

其中,几个核心术语需要着重理解:

  1. 词条(term):索引里面最小的存储和查询单元,对于英文来说是一个词,对于中文来说一般指分词后的一个词。
  2. 词典(Term Dictionary):也叫字典,是词条的组合。搜索引擎的通常索引单位是单词,单词词典是文档集合中出现过的所有单词构成的字符串集合,单词词典内每条索引项记载单词本身的一些信息以及指向倒排所有的指针。
  3. 倒排表(Post list):一个文档通常由多个词组成,倒排表记录的是某个词在哪些文档里出现过及出现的位置。每个记录称为一个倒排项(Posting),倒排表记录的不单单是文档编号,还记录了词频等信息。
  4. 倒排文件(Inverted File):所有单词的倒排列表往往顺序地存储在磁盘的某个文件里,这个文件被称之为倒排文件,倒排文件是存储倒排索引的物理文件。

词典和倒排表是 Lucene这种很重要的两种数据结构,是实现快速检索的重要基石。词典和倒排文件是分两部分存储的,词典在内存中而倒排文件存储在磁盘。

相关性得分:以上面的图片为例,如果我们搜索 “Java is best”,我们会发现拆分的成三个单词,在文档一中命中(出现)了三个单词,文档二和文档三中命中了两个单词,那么文档一的相关性得分就最高。根据相关性得分从高到低排序,就会检索出相关的文档。

4、使用docker安装ElasticSearch

安装docker可以参考我的另一篇文章,直接从上到下傻瓜式安装。如下:

docker的介绍与安装

4.1、下载镜像文件

首先需要下载这两个镜像文件

docker pull elasticsearch:7.4.2   存储和检索数据引擎 docker pull kibana:7.4.2      可视化检索数据工具

4.2 、创建实例,启动es

mkdir -p /mydata/elasticsearch/config mkdir -p /mydata/elasticsearch/data --任何一台远程主机都可以访问
echo "http.host: 0.0.0.0" >> /mydata/elasticsearch/config/elasticsearch.yml -- 保证权限 
chmod -R 777 /mydata/elasticsearch/      -- 9200是发送http请求restful请求的,9300是es集群之间的通信端口,single-node 单节点运行,并指定es启动占用的内存
docker run --name elasticsearch -p 9200:9200 -p 9300:9300 \
-e "discovery.type=single-node" \
-e ES_JAVA_OPTS="-Xms64m -Xmx128m" \
-v /mydata/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
-v /mydata/elasticsearch/data:/usr/share/elasticsearch/data \
-v /mydata/elasticsearch/plugins:/usr/share/elasticsearch/plugins \
-d elasticsearch:7.4.2

如果用docker ps 发现es没启动成功到/mydata/elasticsearch/路径下执行上面的chmod -R 777 /mydata/elasticsearch/ 保证赋予文件及子文件的权限为 RWX

然后重新启动elasticsearch。报错的话可以看对应的容器启动日志 ,报错一般都是因为上面run命令空格和换行问题

docker logs  +`容器id前三位`

删除容器

 docker rm 容器id
docker ps -a 查看es的容器id
文件权限没问题后用容器id启动es(比如我的容器id是 13e30b6e7c1a ),报错就看日志重新run启动
docker start 13e30b6e7c1a 

postman测试访问虚拟机9200端口的elasticSearch

5.安装Kibana

docker run --name kibana -e ELASTICSEARCH_HOSTS=http://172.20.10.11:9200 -p 5601:5601 \
-d kibana:7.4.2172.20.10.11为自己的虚拟机ip   ifconfig命令查看

访问虚拟机5601端口的Kibana

如下:安装成功

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/56229.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Ubuntu开机自启服务systemd.service配置教程(Ubuntu服务)(Linux服务)upstart

文章目录 为什么要将程序配置成服务?1. 自动启动2. 后台运行3. 定时重启4. 简化管理5. 整合系统 版本支持1. Ubuntu 14.04及更早版本:使用upstart作为默认的init系统/etc/rc.local旧版本新版本 2. Ubuntu 15.04到16.04版本:默认使用systemd作…

OLTP和OLAP的区别以及使用场景

1、什么是OLTP? 全称OnLine Transaction Processing,联机事务处理系统,就是对数据的增删改查等操作 存储的是业务数据,来记录某类业务事件的发生,比如下单、支付、注册等 典型代表有Mysql、Oracle等数据库&#xff…

制造周期缩短30%,看别家如何用MES逐个击破生产难题!

01制造周期长是厂商“会呼吸的的痛” 厂商制造周期长是会呼吸的痛 它形成于排产制造的每个步骤 影响订单交付能力会痛 为满足交期囤货导致资金积压会痛 无法准交而丢失订单会痛 逾期交付缴纳违约金也痛 内部研发设计和生产运营效率低 运营成本增加、竞争力减弱最痛 能…

Liunx环境下git的详细使用(gitee版)

Liunx环境下git的详细使用(gitee版) 1.git是什么2.git操作2.1在gitee创建一个仓库2.2.gitignore2.3.git 3.git三板斧3.1add3.2 commit3.3push 4.git其他命令4.1查看当前仓库状态4.2查看提交日志4.3修改git里面文件名称4.4删除文件4.5修改远端仓库内容 1.…

HDFS架构刨析

HDFS架构刨析 概述HDFS架构图整体概述主角色:namenodefsimage内存元数据镜像文件edits log(Journal)编辑日志 从角色:datanode主角色辅助角色:secondarynamenode 重要特性主从架构分块存储机制副本机制namespace元数据…

docker中的jenkins去配置sonarQube

docker中的jenkins去配置sonarQube 1、拉取sonarQube macdeMacBook-Pro:~ mac$ docker pull sonarqube:8.9.6-community 8.9.6-community: Pulling from library/sonarqube 8572bc8fb8a3: Pull complete 702f1610d53e: Pull complete 8c951e69c28d: Pull complete f95e4f8…

从零开始打造你的书店小程序商城

随着互联网的发展,线上商城成为了书店经营的重要方式之一。如何快速搭建一个符合书店特点的小程序商城呢?下面将为您详细介绍利用乔拓云平台搭建一个符合书店特点的小程序商城的步骤。 首先,登录乔拓云平台,进入商城后台管理页面。…

自然语言处理学习笔记(五)————切分算法

目录 1.切分算法 2.完全切分 3.正向最长匹配 4.逆向最长匹配 5.双向最长匹配 6.速度评测 1.切分算法 词典确定后,句子可能含有很多词典中的词语,他们有可能互相重叠,如何切分需要一些规则。常用规则为:正向匹配算法、逆向匹…

数据结构【第3章】——线性表

线性表的定义 线性表:零个或多个数据元素的有限序列。 1)线性表是一个序列。即元素之间是有顺序的,若元素存在多个,则第一个元素无前驱,最后一个元素无后继,其他每个元素都有且只有一个前驱和后继。 2&a…

基元类型,引用类型,值类型

基元类型,引用类型,值类型 一、基元类型二、引用类型和值类型三、值类型装箱拆箱 一、基元类型 编译器直接支持的数据类型就是基元类型 基元类型直接映射到Framework类库(FCL)中存在的类型。例如int直接映射到System.Int32&#x…

使用Python分析二手汽车的销售价格 -- 机器学习项目基础篇(9)

如今,随着技术的进步,机器学习等技术正在许多组织中大规模使用。这些模型通常使用一组以数据集形式提供的预定义数据点。这些数据集包含特定域的过去/先前信息。在将这些数据点馈送到模型之前组织这些数据点是非常重要的。这就是我们使用数据分析的地方。…

【Python ezdxf+matplotlib】显示AutoCAD导出的.dxf格式文件

代码: import ezdxf,matplotlib import matplotlib.pyplot as plt from matplotlib.patches import Polygon matplotlib.use(TkAgg) # 避免Matplotlib版本与其他相关库的兼容性问题def display_dxf(file_path):doc ezdxf.readfile(file_path)msp doc.modelspac…