全文检索服务器Elasticsearch
一、es的介绍
1、为什么要使用es?
%title% %cat_name% %desc% %sell_point%------->1、不支持索引 2、多次全表扫描
2、什么是es?
es是基于lucene的全文检索服务器,对外提供restful接口
3、es的原理【重点】
正排索引:查字典时从第一页开始找,直到找到为止(正文--->关键字)
倒排索引:查字典时通过目录查找(关键字---->正文)
倒排索引表的组成:
doucument
term------------------->document
term
分词列表的特点:
1、不重复
2、“的 得 地”语气词不参加分词
3、不搜索的field不参加分词
4、es的客户端
TransportClient:8.0会删除
RESTHighLevelClient:官方推荐
5、es的启动器
elasticsearch-rest-high-level-client
二、es的安装
1、安装
- 1、设置虚拟内存为2G
- 2、创建admin账户,并把upload和local目录的拥有者设置为admin
groupadd elk
usermod -G elk admin
su admin
groups
su root
chown -R admin:elk /usr/upload
chown -R admin:elk /usr/local
cd /usr
ll
- 3、切换账户
su admin
- 4、解压安装包
cd /usr/upload
tar -zxvf elasticsearch-6.2.3.tar.gz -C /usr/local
- 5、修改elasticsearch.yml
vim /usr/local/elasticsearch-6.2.3/config/elasticsearch.yml
:
cluster.name: power_shop
node.name: power_shop_node_1
network.host: 0.0.0.0
http.port: 9200
transport.tcp.port: 9300
discovery.zen.ping.unicast.hosts: [“192.168.204.133:9300”, “192.168.204.134:9300”]
path.data: /usr/local/elasticsearch-6.2.3/data
path.logs: /usr/local/elasticsearch-6.2.3/logs
http.cors.enabled: true
http.cors.allow-origin: /.*/ - 6、修改jvm.options
vim /usr/local/elasticsearch-6.2.3/config/jvm.options
:
-Xms512m
-Xmx512m - 7、修改文件创建权限
su root
vim /etc/security/limits.conf
:
* soft nofile 65536
* hard nofile 65536 - 8、修改虚拟内存大小
su root
vim /etc/sysctl.conf
:
vm.max_map_count=655360
sysctl -p
- 9、测试
http://192.168.204.133:9200
2、启动和关闭
cd /usr/local/elasticsearch-6.2.3/bin
启动:
./elasticsearch
或
./elasticsearch -d
三、es入门
1、index管理
- a、创建index
PUT /java10
{
"settings":{
"number_of_shards":2, #主分片的数量,提高处理能力
"number_of_replicas":0 #备份分配的数量,提高可用性
}
}
注意:一台服务器时,备份分片的数量必须设置为0
- b、修改index
PUT /java10/_settings
{
"number_of_replicas":1
}
注意:index一旦创建,主分片的数量不可修改,因为:hash(id) % number_of_primary_shards=shard
- c、删除index
DELETE /java10
2、mapping管理
- a、创建mapping
POST /java10/course/_mapping
{
"properties":{
"name":{
type:"text"
}
}
}
3、document管理
- a、新增document
POST /java10/course/1
{
"name":"python从入门到放弃",
"description":"人生苦短,我用Python",
"studymodel":"201002"
}
- b、修改document
PUT /java10/course/1
{
"name":".net从入门到放弃",
"description":".net程序员谁都不服",
"studymodel":"201003"
}
- c、删除document
DELETE /java10/course/1
- d、查询document
GET /java10/course/1
四、ik分词器
- 1、安装
解压到/usr/local/elasticsearch-6.2.3/plugs,并重命名 - 2、自定义词库
IKAnalyzer.cfg.xml:配置扩展词典和停用词典
main.dic:扩展词库,eg:奥利给
stopword.dic:停用词库,eg:a、an、the、的、地、得
注意:必须另存为UTF-8格式
- 3、分词模式
ik_smart:粗粒度,搜索时使用
ik_max_word:细粒度,往索引库写时使用
五、field的详细介绍【难】
- 1、field的数据类型
文本:text、keyword(特殊的varchar)
数字:integer、long、float、double - 2、field的属性
type:数据类型,eg:text、keyword、integer、long、float、double
analyzer:分词模式,eg:analyzer=ik_max_word、search_analyzer=ik_smart
index:是否往索引目录写,eg:true、false
_source:document中是否存储,eg:excludes、includes - 3、filed属性的设置标准
属性 标准
type 分词是否有意义
index 是否搜索
_source 是否展示
六、es的集群搭建
- 1、搭建步骤
- 1)拷贝elasticsearch-1
- 2)删除elasticsearch-2的data目录
- 3)修改elasticsearch-2的elasticsearch.yml
- node.name: power_shop_node_2
- discovery.zen.ping.unicast.hosts: [“192.168.204.133:9300”, “192.168.204.134:9300”]
- 2、实验
- 1、修改备份分片的数量:1----->每个节点一主一备
- 2、关闭节点2----->yellow(2 of 4)
- 3、修改备份分片的数量:0,关闭节点2----->red(1 of 2)
- 3、集群的健康状况
- 绿色:正常
- 黄色:备份分片不可用
- 红色:主分片不可用