Elasticsearch(一):简介和基础检索

一、Elasticsearch

1.1 Elasticsearch 简介

Elasticsearch是一个基于Apache Lucene的开源搜索引擎。无论在开源还是专有领域,Lucene可以被认为是迄今为止最先进、性能最好的、功能最全的搜索引擎库。

Elasticsearch也使用Java开发并使用Lucene作为其核心来实现所有索引和搜索的功能,但是它的目的是通过简单的RESTful API来隐藏Lucene的复杂性,从而让全文搜索变得简单。

特点

  • 分布式的实时文件存储,每个字段都被索引并可被搜索
  • 分布式的实时分析搜索引擎,不规则查询
  • 可以扩展到上百台服务器,处理PB级结构化或非结构化数据

使用场景:

  • 为用户提供按关键字查询的全文搜索功能
  • 著名的ELK框架(ElasticsearchLogstashKibana),实现企业海量日志的处理分析的解决方案。大数据领域的重要一份子

1.2 Elasticsearch 存储结构

Elasticsearch是面向文档(document oriented)的,这意味着它可以存储整个对象或文档(document)。然而它不仅仅是存储,还会索引(index)每个文档的内容使之可以被搜索。在Elasticsearch中,你可以对文档(而非成行成列的数据)进行索引、搜索、排序、过滤。这种理解数据的方式与以往完全不同,这也是Elasticsearch能够执行复杂的全文搜索的原因之一。
在这里插入图片描述

结构描述
cluster整个elasticsearch默认就是集群状态,整个集群是一份完整、互备的数据
node集群中的一个节点,一般只一个进程就是一个node
shard分片,即使是一个节点中的数据也会通过hash算法,分成多个片存放,默认是5片
index相当于RDBMS的database, 对于用户来说是一个逻辑数据库,虽然物理上会被分多个shard存放,也可能存放在多个node中
type类似于RDBMS的table,但是与其说像table,其实更像面向对象中的class , 同一Json的格式的数据集合。ES6之后,一个index中只能有一个type
document类似于RDBMS的 row、面向对象里的object
field相当于字段、属性

二、Elasticsearch & Kibana 安装

2.1 单机版 ES 安装

① 添加用户、用户组

[root@hadoop100 ~]# adduser elk
[root@hadoop100 ~]# passwd elk
[root@hadoop100 ~]# groupadd es
[root@hadoop100 ~]# usermod -G es elk

② 授权

[root@hadoop100 ~]# vi /etc/sudoers
## Allow root to run any commands anywhere
root    ALL=(ALL)       ALL
elk    ALL=(ALL)       ALL

③ 解压文件夹并修改文件所属、所属组

[root@hadoop100 ~]# tar -zxvf elasticsearch-6.3.1.tar.gz -C /opt/module
[elk@hadoop100 elasticsearch-6.3.1]# sudo chown -R elk elasticsearch-6.3.1/
[elk@hadoop100 elasticsearch-6.3.1]# sudo chgrp es elasticsearch-6.3.1/

④ 修改虚拟机参数

[elk@hadoop100 elasticsearch-6.3.1]# vim ./config/jvm.options

在这里插入图片描述
⑤ 解除默认配置对服务器性能的束缚

[elk@hadoop100 elasticsearch-6.3.1]# vim /etc/security/limits.conf

在这里插入图片描述
⑥ 进行其他配置

[elk@hadoop100 elasticsearch-6.3.1]# vim /etc/sysctl.conf
[elk@hadoop100 elasticsearch-6.3.1]# sysctl -p

在这里插入图片描述

[elk@hadoop100 elasticsearch-6.3.1]# vim config/elasticsearch.yml

在这里插入图片描述
⑦ 后台启动Elasticsearch

[elk@hadoop100 elasticsearch-6.3.1]# bin/elasticsearch -d

⑧ 远程访问
在这里插入图片描述

2.2 Kibana 安装

① 解压文件夹并修改文件名

[root@hadoop100 software]# tar -zxvf kibana-6.3.1-linux-x86_64 -C /opt/module

[root@hadoop100 module]# mv kibana-6.3.1-linux-x86_64/ kibana-6.3.1

② 修改配置文件

[root@hadoop100 kibana-6.3.1]# vim ./conf/kibana.yml
server.port: 5601
server.host: "192.168.182.100"
elasticsearch.url: "http://192.168.182.100:9200"

③ 启动Kinana

[root@hadoop100 kibana-6.3.1]# nohup ./bin/kibana &

2.3 Docker 安装 ES 和 Kibana

① 拉取镜像

#安装ElasticSearch
[root@mall ~]# docker pull elasticsearch:7.4.2
[root@mall ~]# docker pull kibana:7.4.2

② 创建存储文件

# 将es中配置文件挂载到外面的目录,通过修改虚拟机外面的文件夹es配置,进而修改docker中es的配置
[root@mall ~]# mkdir -p /mydata/elasticsearch/config
[root@mall ~]# mkdir -p /mydata/elasticsearch/data 
[root@mall ~]# chmod -R 777 /mydata/elasticsearch/

# 配置 http.host:0.0.0.0 代表es可以被远程的任何机器访问,注意这里host:后需要有空格 
[root@mall ~]# echo "http.host: 0.0.0.0">> /mydata/elasticsearch/config/elasticsearch.yml

③ 运行容器

# 将es中配置文件挂载到外面的目录,通过修改虚拟机外面的文件夹es配置,进而修改docker中es的配置
[root@mall ~]# 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

[root@mall ~]# docker run --name kibana \
-e ELASTICSEARCH_HOSTS=http://192.168.182.150:9200 \
-p 5601:5601 -d kibana:7.4.2

三、Elasticsearch 初步检索

3.1 _cat

  • GET /_cat/nodes:查看所有节点
  • GET /_cat/health:查看es健康状况
  • GET /_cat/master:查看主节点
  • GET /_cat/indices:查看所有索引

3.2 插入文档

  • POST新增。如果不指定id,会自动生成id。指定id就会修改这个数据,并新增版本号
  • PUT可以新增可以修改。PUT必须指定id;由于PUT需要指定id,我们一般都用来做修改,不指定id会报错
PUT /china/BeiJing/3
{
  "name":"YMY",
  "age":"200"
}

在这里插入图片描述

3.3 检索信息

① 检索单个信息

GET /china/BeiJing/1

在这里插入图片描述

② 检索全部信息

GET /china/BeiJing/_search

在这里插入图片描述

③ 根据字段检索

GET /china/BeiJing/_search?q=GuGong

④ 只查看_source数据

GET /china/BeiJing/1/_source

在这里插入图片描述

3.4 修改文档

① 修改文档

  • POST操作会对比源文档数据,如果相同不会有什么操作,文档version不增加;
  • PUT操作总会将数据重新保存并增加version版本;
POST /china/BeiJing/2
{
  "name":"GuGong2",
  "age":"1000"
}

在这里插入图片描述
② 局部添加一个字段

_update对比元数据如果一样就不进行任何操作。看场景;对于大并发更新,不带update;对于大并发查询偶尔更新,带update;对比更新,重新计算分配规则。

POST /china/BeiJing/2/_update
{
  "doc": {
    "artificial":true
  }
}

③ 并发修改带版本号

POST /china/BeiJing/2?if_seq_no=5&if_primary_term=1
{
  "name":"GuGong",
  "age":"1000"
}

在这里插入图片描述

3.5 删除文档 & 索引

① 删除文档

DELETE /china/BeiJing/1

在这里插入图片描述
② 删除索引

DELETE /china
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

HuCheng1997

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

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

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

打赏作者

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

抵扣说明:

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

余额充值