ElasticSearch入门

1.1、ElasticSearch(ES):

        用Java开发是当前最流行的开源的企业级搜索引擎。实时,稳定,可靠,快速,安装使用方便。

1.2、ES与Lucene的关系

        Lucene被认为是迄今为止最先进、性能最好、功能最全的搜索引擎(框架)。

缺点:

        只能在Java项目使用,且以jar的方式集成

        使用非常复杂

        不支持集群环境

1.3、ES和Solr比较

        对已有数据进行搜索时,Solr更快。当实时建立索引时,Solr会产生io阻塞

        对比:

                Solr利用zookeeper分布式管理,ES自身带有分布式协调管理

                Solr支持格式更多,JSON/XML/CSV; ES仅支持JSON

                Solr传统搜索表现好,ES在实时搜索表现好

1.4、ES vs 关系型数据库

       

 2、Lucene全文检索框架

2.1、全文检索:

        通过一个程序扫描文本中的每一个单词,针对单词建立索引,并保存该单词在文本中的位置、以及出现的次数;用户查询时,通过之前建好的索引来查询,将索引中单词对应的文本位置、出现的次数返回给用户,因为有了具体文本位置,所以就可以将具体内容读取出来了。

2.2、分词原理之倒排索引

         分词(记录单词和位置)---去重(合并整理单词和位置集合)---排序(单词排序)

3、Elasticsearch核心概念

3.1、索引index

        拥有几分相似特征的文档的集合

        一个索引由一个名字来标识

3.2、映射mapping

        用来定义一个文档

3.3、字段Field

        相当于数据表的字段

3.4、字段类型Type

        字段类型:Text、Keyword、Byte等

3.5 、文档document

        类似一条记录,一个可被索引的基础信息单元。文档以JSON格式表示

3.6、集群cluster

        由一个或多个节点组成

3.7、节点node

        集群的一部分,存储数据,参与集群的索引和搜索

4、安装Elasticsearch

        4.1创建用户组、用户、设置sudo权限

# 添加用户组,添加用户,设置密码
groupadd elasticsearch
useradd elastic
passwd elastic
# 切换用户为elastic,创建es目录
mkdir -p /usr/local/es
# 切换用户为root,将elastic用户添加到用户组
usermod -G elasticsearch elastic
chown -R elastic /usr/local/es
# 设置sudo权限
visudo
# 找到root用户权限,添加elastic用户权限
elastic ALL=(ALL)	ALL

        4.2安装配置elasticsearch7.6.1

es安装包地址:

https://download.csdn.net/download/David_bdqn/20268029
# 切换为elastic用户,上传elasticsearch7.6.1安装包,并解压
cd /usr/local/es
# 上传安装包es
tar -zxvf elasticsearch-7.6.1‐linux‐x86_64.tar.gz

配置,对应的discovery.seed_hosts改为自己服务器的ip

# 创建文件夹log,data
cd /usr/local/es/elasticsearch-7.6.1
mkdir {log,data}
# 配置elasticsearch.yml
cd config
rm -rf elasticsearch.yml
vim elasticsearch.yml
# 内容如下
cluster.name: es-yun
node.name: node1
path.data: /usr/local/es/elasticsearch-7.6.1/data
path.logs: /usr/local/es/elasticsearch-7.6.1/log
network.host: 0.0.0.0
http.port: 9200
discovery.seed_hosts: ["172.16.227.201"]
cluster.initial_master_nodes: ["node1"]
bootstrap.system_call_filter: false
bootstrap.memory_lock: false
http.cors.enabled: true
http.cors.allow‐origin: "*"

调整jvm参数,根据服务器配置相应调整,本次设置为1G

vim jvm.options
-Xms1g
-Xmx1g

        4.3修改系统配置

由于现在使用普通用户安装es服务,es服务队服务器的资源要求比较多,包括内存大小、线程数等。所以需要解开资源束缚

                4.3.1文件最大数限制

不改,可能出现错误:

max file descriptors [4096] for elasticsearch process likely too low, increase to at least [65536]

sudo vim /etc/security/limits.conf
# 添加如下内容,包括*
* soft nofile 65536
* hard nofile 131072
* soft nproc 2048
* hard nproc 4096

                 4.3.2普通用户启动线程数限制

不改,可能出现错误:

max file descriptors [4096] for elasticsearch process likely too low, increase to at least [65536]

sudo vim /etc/security/limits.d/20‐nproc.conf
# 原先为1024,改为4096
soft nproc 4096

                 4.3.3普通用户最大虚拟内存

不改,可能出现错误:

max file descriptors [4096] for elasticsearch process likely too low, increase to at least [65536]

sudo vim /etc/sysctl.conf
# 追加以下内容
vm.max_map_count=262144
# 执行下面命令,生效
sudo sysctl -p

       全部修改完毕,退出客户端重新连接xshell生效

        4.4启动ES服务

cd /usr/local/es/elasticsearch-7.6.1
# 启动
nohup bin/elasticsearch 2>&1 &

登录:http://172.16.227.201:9200/?pretty,页面如下

 5、客户端Kibana安装

客户端分为图形界面客户端和代码客户端

ES主流客户端Kibana,开放9200端口与图形界面客户端交互

cd /usr/local/es
# 上传安装包kibana-7.6.1-linux-x86_64.tar.gz,解压
tar -zxvf kibana-7.6.1-linux-x86_64.tar.gz
# 重命名
mv kibana-7.6.1-linux-86_64  kibana-76.1
cd kibana-7.6.1/config
# 修改配置文件
vim kibana.yml
# 内容如下:
server.port: 5601
server.host: "服务器IP"
elasticsearch.hosts: ["http://IP:9200"] #这里是elasticsearch的访问地址

启动:

nohup bin/kibana 2>&1 &

访问:http://172.16.227.201:5601/app/kibana,页面如下

 6、安装IK分词器

后续使用ES来进行中文分词,所以需要单独给ES安装IK分词器

cd /usr/local/es/elasticsearch-7.6.1/plugins
# 创建目录
mkdir ik
# 上传分词器,并解压
unzip elasticsearch-ik-7.6.1.zip
# 重启ES

ES集群搭建,启动三个es节点,访问时只显示一个master。

解决方案:进入节点2、3的elasticsearch-7.6.1/data目录,删除nodes文件,重启2、3节点es即可。

7、基本操作

在kibana控制台console运行

 7.1、创建索引

        PUT /es_db

7.2、查询索引

        GET /es_db

7.3、删除索引

        DELETE /es_db

7.4、添加/修改文档

PUT /es_db/_doc/1
{
  "name":"张三",
  "sex":1,
  "age":25,
  "address":"广州天河公园",
  "remark":"java developer"
}

 7.5、查询文档

        格式:GET /索引名称/类型/id        GET /es_db/_doc/1

7.6、删除 DELETE /es_db/_doc/1

8、查询操作

8.1、查询当前类型中的所有文档 _search

        GET /es_db/_doc/_search

        类似:select * from student

8.2、条件查询,age=28,_search?q=*:***

        GET /es_db/_doc/_search?q=age:28

        类似:select * from student where age = 28

8.3、范围查询,age 在[20,26]之间的,_search?q=***[** TO **]

        GET /es_db/_doc/_search?q=age[20 TO 26]

        类似:select * from student where age between 20 and 26

8.4、多个id批量查,_mget

GET /es_db/_doc/_mget
{
    "ids":["1","2"]
}

         类似:select * from student where id in (1,2)

8.5、小于等于、大于的,<=、> ,_search?q=age:<=26 

        GET /es_db/_doc/_search?q=age:>20

8.6、分页查询        from*&size=*        类似 limit 

        GET /es_db/_doc/_search?q=age:<26&from0&size=10

8.7、对查询结果只输出某些字段,_source=字段,字段

        GET /es_db/_doc/_search?_source=name,age

        类似:select name,age from student

8.8、对查询结果排序,sort=字段:desc/asc

        GET /es_db/_doc/_search?sort=age:desc

        类似:select * from student order by age desc

索引重命名

POST _reindex
{
  "source": {
    "index": "old_name"
  },
  "dest": {
    "index": "new_name"
  }
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值