Elasticsearch简介

官方介绍:Elasticsearch 是一个分布式、RESTful 风格的搜索和数据分析引擎,能够解决不断涌现出的各种用例。 作为 Elastic Stack 的核心,它集中存储您的数据,帮助您发现意料之中以及意料之外的情况。

全文搜索属于最常见的需求,开源的 Elasticsearch 是目前全文搜索引擎的首选。

可以快速地存储、搜索和分析海量数据。维基百科、Stack Overflow、GitHub 都在采用。

Elatic 的底层是开源库吧Lucene。但是,你没法直接用,必须自己写代码调用它的接口,Elastic 是 Lunce 的封装,提供了 REST API 的操作接口,开箱即用

REST API:天然的跨平台

官网文档:https://www.elastic.co/guide/en/elasticsearch/reference/current/index.html

基本概念

index(索引)

动词,相当于 MySQL 中的 insert;

名词,相当于MySQL 中的 DataBase;

Type(类型)

在 Index(索引)中,可以定义一个或多个类型;

类似于 MySQL 中的 Table,每一种类型的数据放在一起;

关系型数据库中两个数据表示是独立的,即使他们里面有相同名称的列也不影响使用,但ES中不是这样的。

elasticsearch是基于Lucene开发的搜索引擎,而ES中不同type下名称相同的filed最终在Lucene中的处理方式是一样的。

两个不同type下的两个user_name,在ES同一个索引下其实被认为是同一个filed,你必 须在两个不同的type中定义相同的filed映射。否则,不同type中的相同字段名称就会在处理中出现冲突的情况,导致Lucene处理效率下降。 去掉type就是为了提高ES处理数据的效率。

Elasticsearch 7.x

URL中的type参数为可选。比如,索引一个文档不再要求提供文档类

Elasticsearch 8.x

不再支持URL中的type参数。

建议:将索引从多类型迁移到单类型,每种类型文档一个独立索引

Document(文档)

保存在某个索引(index)下,种类型(Type)的一个数据(Document),文档是 JSON 格式的,Document 就像是 MySQL 中某个 Table 里面的内容;

{
  "user": "张三",
  "title": "工程师",
  "desc": "数据库管理"
}

同一个 Index 里面的 Document,不要求有相同的结构(scheme),但是最好保持相同,这样有利于提高搜索效率。

Elasticsearch安装

存储和检索数据

docker pull elasticsearch:7.4.2

可视化检索数据

docker pull kibana:7.4.2

准备工作

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/ # 设置elasticsearch文件可读写权限

创建实例

docker run --name=elasticsearch \
-p 9200:9200 -p 9300:9300 \
--restart=always \
-e  "discovery.type=single-node" \
-e ES_JAVA_OPTS="-Xms64m -Xmx256m" \
-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
注意:-e ES_JAVA_OPTS="-Xms64m -Xmx128m" 测试环境下,设置 ES 的初始内存和最大内存,否则可能导致内存过大启动不了 ES

启动成功后,访问 ip:9200 ,例如:192.168.152.129:9200

若启动失败,可以尝试使用 docker logs elasticsearch 查看错误并解决它。

安装 Kibana

docker run --name kibana -e ELASTICSEARCH_HOSTS=http://192.168.37.133:9200 -p 5601:5601 -d kibana:7.4.2

-e ELASTICSEARCH_HOSTS=你的elasticsearch地址

启动需要稍微等待一会,然后访问 192.168.152.129:5601


Last modification:January 28, 2021
如果觉得我的文章对你有用,请随意赞赏