优点
- es支持海量数据的写入和更新
- es可以和hadoop,hive及spark进行集成
- es支持hivesql的操作,可以通过hivesql将数据导入es
- es的在进行数据检索查询是速度比较快
- es是分布式存储
应用
全文检索
全文检索流程:
1-对文档数据(文本数据)进行分词
2-将分词数据建立索引
3-根据分词查询数据
ES 分布式搜索服务 文本数据存储
- 存储单元 shard 分片
- 副本 默认 2
- 主分片 副本分片
- 索引 相同类型数据 先创建索引,然后存储数据
- 元数据
- 分片信息,datanode信息
- 被master管理
- 分片信息,datanode信息
- 自己内部有选举算法实现master选举
es启动命令
python
su es
cd
elasticsearch -d
es客户端工具使用
启动
在浏览器输入网址
Pycharm的客户端插件
python
# 创建索引
PUT itcast
# 写入 数据
POST itcast/_doc
{
"name": "张飒",
"age": 20
}
# 查询数据
GET itcast/_search
# 删除索引
DELETE itcast
# 查看索引配置
GET itcast/_settings
# 修改索引配置
PUT itcast/_settings
{
"number_of_replicas": "0"
}
elasticsearch 模块安装
python
pip install elasticsearch==7.17.3 -i https://mirrors.aliyun.com/pypi/simple
开发
python
# 导入模块
# Elasticsearch类封装了操作es的方法
from elasticsearch import Elasticsearch
# 1、创建索引库
es = Elasticsearch(hosts=['192.168.88.166:9200'])
# index='itheima' 指定索引库名
# id=1 指定数据id
# document 指定数据内容
# res = es.index(index='itheima',id=1,document={'name':'张三','age':20,'gender':'男性'})
res = es.index(index='itheima',id=2,document='{"name":"李四","age":22,"gender":"男性"}')
# 查看创建后的信息
# print(res)
# 2、查询创建的数据
# 返回的结果是字典类型,可以按照字典方式进行取值
# 查询所有数据
res = es.search(index='itheima')
print(res["hits"]['hits'][0]['_source'])
# 2-1 按照指定一个字段查询
res = es.search(index='itheima',query={'match':{'name':"李四"}})
print(res["hits"]['hits'][0]['_source'])
# 2-2 按照指定多个字段查询
res = es.search(index='itheima',query={'multi_match':{'query':"李四",'fields':["name",'gender']}})
print(res["hits"]['hits'][0]['_source'])
# 2-3 指定id查询
res = es.get(index='itheima',id=1)
print(res['_source'])