ElasticSearch学习

1 ElasticSearch简介

1.1 什么是ElasticSearch

The Elastic Stack, 包括 Elasticsearch、Kibana、Beats 和Logstash(也称为 ELK Stack)。 能够安全可靠地获取任何来源、任何格式的数据,然后实时地对数据进行搜索、分析和可视 化。Elaticsearch,简称为 ES,ES 是一个开源的高扩展的分布式全文搜索引擎,是整个 Elastic Stack 技术栈的核心。它可以近乎实时的存储、检索数据;本身扩展性很好,可以扩展到上 百台服务器,处理PB 级别的数据。
  ElasticSearch是一个基于Lucene的、RESTful风格的搜索和数据分析引擎。是当前流行的企业级搜索引擎。

1.2 Elasticsearch特点

(1)可以作为一个大型分布式集群(数百台服务器)技术,处理PB级数据,服务大公司;也可以运行在单机上

(2)将全文检索、数据分析以及分布式技术,合并在了一起,才形成了独一无二的ES;

(3)开箱即用的,部署简单

(4)全文检索,同义词处理,相关度排名,复杂数据分析,海量数据的近实时处理

1.3 Elasticsearch应用案例

  • GitHub:2013年初,GitHub将solr缓存改为es,以便用户搜索20TB的数据
  • 维基百科:启动以es为基础的核心搜索架构SoundCloud
  • 百度:以es作为数据分析引擎,20多个业务线采集服务器上的各类数据以及用户自定义数据,通过对各种数据进行多维分析,辅助定位异常。其单集群最大100台机器,200个es节点,每天导入超过30TB的数据
  • 新浪、阿里、携程、苏宁等各大公司的站内搜索、数据分析中使用

1.4 Elasticsearch体系结构

Elasticsearch 是面向文档型数据库,一条数据在这里就是一个文档。 我们将 Elasticsearch 里存储文档数据和关系型数据库MySQL 存储数据的概念进行一个类比

image-20210511195817096

2 安装Elasticsearch

docker下无法使用vi命令解决方法

2.1 Windows下安装

参考

2.2 Docker环境下安装ElasticSearch

docker下无法使用vi命令解决方法

我们会碰到修改容器配置文件的,但是在容器下vi命令不可用,所以进入每个容器后安装vim命令就可以修改配置文件,进入容器内部,执行以下命令

apt-get update
apt-get install vim

2.2.1 es容器创建

1、下载镜像

docker pull elasticsearch:7.6.2

2、创建容器

docker run -d --name myes -e "discovery.type=single-node" -p 9200:9200 -p 9300:9300 elasticsearch:7.6.2

如果虚拟机内存过小建议执行以下,就不需要在进行系统调优:

docker run --name myes -d -e ES_JAVA_OPTS="-Xms512m -Xmx512m" -e "discovery.type=single-node" -p 9200:9200 -p 9300:9300  elasticsearch:7.6.2

3、浏览器输入地址:

192.168.200.133:9200,即可看到以下信息

{
    "name": "Q6z1-G-",
    "cluster_name": "elasticsearch",
    "cluster_uuid": "kSGG2E7QQCm3SXyHLpQy1g",
    "version": {
        "number": "5.6.12",
        "build_hash": "cfe3d9f",
        "build_date": "2018-09-10T20:12:43.732Z",
        "build_snapshot": false,
        "lucene_version": "6.6.1"
    },
    "tagline": "You Know, for Search"
}

4、重新启动

docker restart myes

重启之后发现重启失败?这与我们刚才修改的配置有关,因为elasticsearch在启动的时候会进行一些检查,比如最多打开的文件的个数以及虚拟内存区域数量等,如果放开了此配置,以为这需要打开更多的文件以及虚拟内存,所以我们需要调优。

5、系统调优

我们一共需要修改两处

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

* soft nofile 65536
* hard nofile 65536

nofile是单个进程允许打开的最大文件个数

soft nofile是软限制,hard nofile是硬限制

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

vm.max_map_count=655360

限制一个进程可以拥有的VMA(虚拟内存区域)的数量

执行下面命令,修改内核参数马上生效:

sysctl -p

之后重启虚拟机和容器

2.2.2 IK分词器安装

**1、首先确定ES版本,**然后到github上下载对应版本的IK分词器,https://github.com/medcl/elasticsearch-analysis-ik

image-20210510153715459

2、通过docker命令将zip包复制到ES容器指定位置

docker cp /tmp/elasticsearch-analysis-ik-7.6.2.zip myes:/usr/share/elasticsearch/plugins

3、进入docker容器对其进行解压操作,注意解压完将zip包删除,ik文件夹下没有子目录

# 进入容器
docker exec -it myes /bin/bash
#进入目录
cd plugins
#创建目录
mkdir ik
#移动压缩包到ik文件夹
mv elasticsearch-analysis-ik-7.6.2.zip ik
# 解压
unzip elasticsearch-analysis-ik-7.6.2.zip
# 删除压缩包
rm -rf elasticsearch-analysis-ik-7.6.2.zip

4、重启docker容器

docker restart myes

2.2.3 HEAD插件

1、跨域配置

进入容器

docker exec -it myes /bin/bash

7.6.2好像可以直接使用vi命令

vi config/elasticsearch.yml

使用vi命令编辑config/elasticsearch.yml,增加以下命令:

#任何人都可以连接
network.host: 0.0.0.0 

http.cors.enabled: true
http.cors.allow-origin: "*"

其中:
**http.cors.enabled: true:**此步为允许elasticsearch跨域访问,默认是false。
**http.cors.allow-origin: “*”:**表示跨域访问允许的域名地址(*表示任意)。

2、重新启动elasticseach容器

3、下载head镜像(此步省略)

docker pull mobz/elasticsearch-head:5

4、创建head容器

docker run ‐di ‐‐name=myhead ‐p 9100:9100 容器ID

如果网页不显示索引数据

修改head容器里面/usr/src/app/_site/vendor.js

共有两处

1)6886行
contentType: "application/x-www-form-urlencoded
改成
contentType: “application/json;charset=UTF-8”
2)7573行

var inspectData = s.contentType === "application/x-www-form-urlencoded" &&

改成

var inspectData = s.contentType === "application/json;charset=UTF-8" &&

2.2.4 Kibana安装

kibana版本和es版本要一致

1、下载镜像

docker pull kibana:7.6.2

2、创建容器

首先要使用docker inspect es查看docker给es容器分配的地址

image-20210514210108285

之后创建kibana容器

docker run -d --name kibana  -e ELASTICSEARCH_URL=http://172.17.0.2:9200 -p 5601:5601 kibana:7.6.2

在之后进入容器

docker exec -it kibana /bin/bash

修改kibana.yml文件

vi /etc/kibana/kibana.yml
server.name: kibana
server.host: "0"
#修改
elasticsearch.hosts: [ "http://172.17.0.2:9200" ]
xpack.monitoring.ui.container.elasticsearch.enabled: true
#添加,如果是6.0以上的可以添加,变成中文界面
i18n.locale: "zh-CN"

之后就可以浏览器访问http://192.168.200.133:5601

2.3 RestFul风格

methodurl地址描述
PUTlocalhost:9200/索引名称/类型名称/文档id创建文档〔指定文档id )
POSTlocalhost:9200/索引名称/类型名称创建文档〔随机文档id )
POSTlocalhost:9200/索引名称/类型名称/文档id/_update修改文档
DELETElocalhost:9200/索引名称/类型名称/文档id删除文档
GETlocalhost:9200/索引名称/类型名称/文档id查询文档通过文档id
POSTlocalhost:9200/索引名称/类型名称/_search查询所有数据

2.3.1 关于索引的基本操作

1、创建一个索引

PUT /索引名/类型名/文档id
{请求体}
image-20210516100501074

2、name这个字段需要指定类型

  • 字符串类型

    text、keyword

  • 数值类型

    long、integer、short、byte、double、float、half float、scaled float

  • 日期类型

    date

  • 布尔值类型

    boolean

  • 二进制类型

    binary

image-20210516100528808

3、指定字段类型

image-20210516100819310image-20210516100858933

4、获取具体信息

image-20210516100819310[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ot04WPdF-1648960337199)(https://cdn.jsdelivr.net/gh/qnjy/images/data/1621130939-image-20210516100858933.png)]

2.3.2 关于文档的操作

基本操作

1、添加数据

put /kuangshen/user/1
{
  "name": "狂神说",
  "age":"23",
  "desc":"一顿操作猛如虎,一看工资2500",
  "tags":["技术宅","直男"]
}
image-20210515105344634

2、获取数据

image-20210515105701265

3、更新操作

如果使用put会改变version版本,这个可以联想到乐观锁

image-20210515105914487

推荐使用POST _update

image-20210515110127905

复杂操作搜索 select(排序、分页、高亮、模糊查询、精准查询)

image-20210515111751957

输出结果太多,不想要那么多!

image-20210515111846452

3 集成SpringBoot

学会查看文档https://www.elastic.co/guide/en/elasticsearch/client/index.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qnjy惊鸿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值