ES查询
RESTful介绍
1.REST起源
表述性状态转变,基于HTTP、URI、XML、JSON等标准和协议,支持轻量级、跨平台、跨语言的架构设计。是Web服务的一种新的架构风格(一种思想)。
轻量级:耦合性越低,越轻量。
2.REST架构主要原则
- 对网络上所有资源都有一个资源标志符
- 对资源的操作不会改变标识符
- 同一资源有多种表现形式(xml、json)
- 所有操作都是无状态的(客户端和服务器端不必保存对方详细信息)
符合上述原则的架构方式称为RESTful
3.URL(统一资源定位符)和URI(同一资源标识符)
URL是URI的特例,包含了定位web资源的足够信息,而URI不包含任何访问资源的方法,唯一作用是解析
URI一般由三部分组成:
1. 访问资源的命名机制
2. 存放资源的主机名
3. 资源自身的名称,由路径表示,着重强调于资源
例如:/ServletDemo/mydemo3
URL也由三部分组成:
1. 协议(或称为服务方式)
2. 存有该资源的主机IP地址(有时也包括端口号)
3. 主机资源的具体地址。如目录和文件名等
例如:http://localhost:8080/ServletDemo/mydemo3
ES与Solr对比
- Solr利用Zookeeper进行分布式处理,而ES自身带有分布式协调管理功能
- Solr支持更多格式数据,而ES仅支持JSON格式
- ES在处理实时搜索应用时效率更高,实时性更好,比如新往github中创建一个工程,能马上搜索到,Solr在传统的搜索应用中变现好于ES
安装
- 安装jdk1.8及以上
- 下载ES7.5版本,并解压
- 配置环境变量(可选)
#解压路径:/home/hadoop/Downloads/elasticsearch-7.5.1
#打开linux的环境配置文件
vim ~/.bashrc
#加入如下内容,并保留退出
export ES=/home/hadoop/Downloads/elasticsearch-7.5.1
export PATH=${ES}/bin:
#使配置立即生效
source ~/.bashrc
4. 启动命令如下,默认绑定两个端口,9200->http(浏览器访问),9300->tcp(使用api对服务器管理的端口)
#已配置环境变量启动方式
elasticsearch
#未配置环境变量需进入安装目录
./bin/elasticsearch
5. 访问命令如下,若返回一个JSON数据,则ES启动成功
#浏览器访问
http://localhost:9200/
#或者终端命令访问
curl 'http://localhost:9200/?pretty' #其中pretty用来美化JSON数据,有多个参数时使用&连接
6. 计算集群中文档数量
curl -H "Content-Type:application/json" -XPOST 'http://localhost:9200/_count?pretty' -d '
{
"query":{
"match_all":{}
}
}'
倒排索引-->加速检索
倒排索引(反向索引):基于信息主体的关键属性值进行构建的“关键词——文档”形式的一种映射结构,实现了通过物品属性信息对物品进行映射时,可以帮助用户快速定位到目标信息,从而极大降低了信息获取难度。助于理解的文章:搜索引擎之倒排索引解读、倒排索引-搜索引擎入门
构造过程:
1.Doc2term词项构造(词项集,即单词词典)
该过程主要是利用分词系统将文档