[TOC]
# 简介
es是功能非常强大的全文搜索引擎,用它的目的是为了能快速的查询你想要的数据
基本查询: 利用es内置查询条件进行查询
组合查询: 把多个基本查询组合在一起的复合性查询
过滤: 查询同时,通过filter条件在不影响打分的情况下筛选出想要的数据
# 基本查询
* term,terms查询
* from,size
* 返回版本号`_version`
* match查询
* 升序降序
* prefix前缀匹配查询
* range范围查询
* wildcard通配符查询
* fuzzy模糊查询
* `more_like_this & more_like_this_field`查询
# 简单查询
创建7个这样的数据
~~~
POST /library/books/1
{
"title": "elasticsearch",
"price":"1",
"preview": "books-1",
"publish_date": "2015-02-06"
}
~~~
查看数据
~~~
GET /library/books/_mget
{
"ids": ["1","2","3","4","5","6","7"]
}
~~~
查看mapping
~~~
GET /library/_mapping
GET /shakespeare/_mapping
~~~
简单查询
~~~
# 指定index名以及type名的搜索
GET /library/books/_search?q=title:elasticsearch
~~~
返回值多条中,会有`_score`这个key,这个值越大就排在前面,这个就叫打分,es认为这个文档比较有价值
~~~
# 指定index名没有type名的搜索
GET /library/_search?q=title:mongo
~~~
~~~
# 既没有index名也没有type名的搜索
GET /_search?q=title:elasticsearch
~~~
# term查询
查询某个字段里有某个关键词的文档
~~~
GET /library/books/_search
{
"query": {
"term": {
"preview": "es"
}
}
}
~~~
查询某个字段里有多个关键词的文档
`minimum_match`: 最小匹配集: 1.说明两个关键词里最少有一个, 2.说明文档里这两个关键词都得存在
~~~
GET /library/books/_search
{
"query": {
"terms": {
"preview": ["es","php"],
"minimum_match": 1
}
}
}
~~~
控制查询返回的数量
form和size
相当于mysql里的limit
from: 从哪个结果开始返回
size: 定义返回最大的结果数
~~~
GET /library/books/_search?q=title:elasticsearch
GET /library/books/_search
{
"from": 1,
"size": 2,
"query": {
"term": {
"title": "elasticsearch"
}
}
}
~~~
返回版本号`_version`
~~~
GET /library/books/_search
{
"version": true,
"query": {
"term": {
"preview": "es"
}
}
}
~~~
# match查询
match查询可以接收文字,数字日期等数据类型
match跟term区别是,match查询的时候,elasticsearch会根据你给定的字段提供合适的分析器,而term查询不会有分析器分析过程
~~~
GET /library/books/_search
{
"query": {
"match": {
"preview": "es"
}
}
}
GET /library/books/_search
{
"query": {
"match": {
"price": 3
}
}
}
~~~
通过`match_phrase`查询
短语查询,slop定义的是关键词之间间隔多少未知单词
~~~
GET /library/books/_search
{
"query": {
"match_phrase": {
"preview": {
"query": "books,es",
"slop": 3
}
}
}
}
~~~
`multi_match`查询
可以指定多个字段
比如查询title和preview这两个字段里都包含Elasticsearch关键词的文档
~~~
GET /library/books/_search
{
"query": {
"multi_match": {
"query": "es",
"fields": ["title","preview"]
}
}
}
~~~
# field指定返回的字段
注意只能返回store为yes的字段
~~~
GET /library/books/_search
{
"fields": ["preview","title"],
"query": {
"match": {
"preview": "es"
}
}
}
~~~
# partial_fields控制加载字段
include表示包含
exclude表示排除
~~~
GET /library/books/_search
{
"partial_fields": {
"partial": {
"include": ["preview"],
"exclude": ["title,price"]
}
},
"query": {
"match_all": {}
}
}
~~~
还可以加通配符*
~~~
GET /library/books/_search
{
"partial_fields": {
"partial": {
"include": ["pr*"],
"exclude": ["tit*"]
}
},
"query": {
"match_all": {}
}
}
~~~
# sort排序
通过sort把结果排序
desc降序
asc升序
~~~
GET /library/books/_search
{
"query": {
"match_all": {}
},
"sort": [
{
"price": {
"order": "desc"
}
}
]
}
~~~
# prefix前缀匹配查询
prefix
~~~
GET /library/books/_search
{
"query": {
"prefix": {
"title": {
"value": "e"
}
}
}
}
~~~
# range控制范围
range查询:范围查询
有from,to,include_lower,include_upper,boots这些参数
include_lower: 是否包含范围的左边界,默认是true
include_upper: 是否包含范围的右边界,默认是true
~~~
GET /library/books/_search
{
"query": {
"range": {
"price": {
"from": "10",
"to": "20",
"include_lower": true,
"include_upper": false
}
}
}
}
~~~
# wildcard通配符查询
允许你使用通配符`*`和?来进行查询
`*`代表一个或多个字符
?仅代表一个字符
注意:这个查询很影响性能
~~~
GET /library/books/_search
{
"query": {
"wildcard": {
"preview": "book*"
}
}
}
~~~
~~~
GET /library/books/_search
{
"query": {
"wildcard": {
"preview": "boo?s"
}
}
}
~~~
# fuzzy模糊查询
value查询的关键字
boost设置查询的权值,默认为1.0
min_similarity:设置匹配的最小相似度,默认值是0.5,对于字符串取值为0-1(包括0和1),对于数值,取值可能大于1,对于日期型取值为1d,2d,1m这样,1d就代表一天
prefix_length:指明区分词项的共同前缀长度,默认是0
max_expansions:指明查询中的词项可扩展的数目,默认可无限大
~~~
GET /library/books/_search
{
"query": {
"fuzzy": {
"preview": "php"
}
}
}
~~~
~~~
GET /library/books/_search
{
"query": {
"fuzzy": {
"preview": {
"value": "php",
"min_similarity": 0.5
}
}
}
}
~~~
# fuzzy_like_this查询与给定内容相似的所有文档
查询得到与给定内容相似的所有文档
fields:字段组,默认是`_all`
like_text: 设置关键词
ignore_tf:设置忽略词项的频次,默认是false
max_query_terns:指明在生成的查询中查询词项的最大数目.默认是25
min_similarity:指明区分词项最小的相似度,默认是0.5
prefix_length:指明区分词项共同前缀的长度,默认是0
boost:设置权值,默认是1.0
analyze:指明用于分析给定内容的分析器
~~~
GET /library/books/_search
{
"query": {
"fuzzy_like_this": {
"fields": ["preview"],
"like_text": "php",
"min_similarity": 0.5,
"prefix_length": 0.2
}
}
}
~~~
# fuzzy_like_this_field查询
只作用在一个字段里
其他与fuzzy_like_this功能一样
~~~
GET /library/books/_search
{
"query": {
"fuzzy_like_this_field": {
"preview": {
"like_text": "php",
"min_similarity": 0.5,
"prefix_length": 0.2
}
}
}
}
~~~
# more_like_this查询
fields:定义字段组,默认是`_all`
like_text:定义要查询的关键词
percent_terms_to_match: 该参数指明一个文档必须匹配多大比例的词项才能被视为相似,默认值是0.3,意思30%比例
min_term_freq:该参数指明在生成的查询中查询词项的最大数目.默认为25
stop_words:该参数指明将被忽略的单词集合
min_doc_freq:该参数指明词项应至少在多个文档中出现才不会被忽略.more是5
max_doc_freq:该参数指明出现词项的最大数目,以避免词项被忽略,默认是无穷大
min_word_len: 该参数指明单个单词的最小长度,低于该值的单词将被忽略,默认值是0
max_word_len: 该参数指明单个单词的最大长度,高于该值的单词将被忽略,默认是无限大
boost_terms: 该参数指明提升每个单词的权重时使用的权值.默认是1
boost: 指明提升一个查询的权值,默认是1.0
analyer:指定用于分析的分析器
~~~
GET /library/books/_search
{
"query": {
"more_like_this": {
"fields": ["preview"],
"like_text": "php",
"min_term_freq": 1,
"min_doc_freq": 1
}
}
}
~~~
# more_like_this_field查询
只作用一个字段里
其他与more_like_this功能一样
~~~
GET /library/books/_search
{
"query": {
"more_like_this_field": {
"preview": {
"like_text": "php",
"min_term_freq": 1,
"min_doc_freq": 1
}
}
}
}
~~~
- SQL
- 名词
- mysql
- 初识mysql
- 备份和恢复
- 存储引擎
- 数据表损坏和修复
- mysql工具
- 数据库操作
- 增
- 删
- 改
- 查
- 数据类型
- 整数类型
- 小数类型
- 日期时间类型
- 字符和文本型
- enum类型
- set类型
- 时间类型
- null与not null和null与空值''的区别
- 数据表操作
- 创建
- 索引
- 约束
- 表选项列表
- 表的其他语句
- 视图
- sql增删改查
- sql增
- sql删
- sql改
- sql查
- sql语句练习
- 连接查询和更新
- 常用sql语句集锦
- 函数
- 字符函数
- 数值运算符
- 比较运算符与函数
- 日期时间函数
- 信息函数
- 聚合函数
- 加密函数
- null函数
- 用户权限管理
- 用户管理
- 权限管理
- pdo
- 与pdo相关的几个类
- 连接数据库
- 使用
- pdo的错误处理
- pdo结果集对象
- pdo结果集对象常用方法
- pdo预处理
- 常用属性
- mysql编程
- 事务
- 语句块
- mysql中的变量
- 存储函数
- 存储过程
- 触发器
- mysql优化
- 存储引擎
- 字段类型
- 三范式和逆范式
- 索引
- 查询缓存
- limit分页优化
- 分区
- 介绍
- 分区算法
- list分区
- range范围
- Hash哈希
- key键值
- 分区管理
- 特别注意
- 分表
- 数据碎片与维护
- innodb表压缩
- 慢查询
- explain执行计划
- count和max,groupby优化
- 子查询优化
- mysql锁机制
- 介绍
- 演示
- 总结
- 乐观锁和悲观锁
- 扛得住的mysql
- 实例和故事
- 系统参数优化
- mysql体系结构
- mysql基准测试
- 索引
- mysql的复制
- win配置MySQL主从
- mysql5.7新特性
- 常见问题
- general log
- 忘记密码
- uodo log与redo log
- 事务隔离级别
- mysql8密码登录
- explain
- 高效的Tree表
- on delete cascade 总结
- mongod
- 简介
- 集合文档操作语句
- 增删改查
- 索引
- 数据导入和导出
- 主从复制
- php7操作mongod
- 权限管理
- redis
- redis简介
- 3.2版本配置文件
- 3.0版本配置文件
- 2.8版本配置文件
- 配置文件总结
- 外网连接
- 持久化
- RDB备份方式保存数据
- AOF备份方式保存数据
- 总结
- win安装redis和sentinel部署
- 事务
- Sentinel模式配置
- 分布式锁
- 管道
- php中redis代码
- 发布订阅
- slowlog
- Redis4.0
- scan和keys
- elasticsearch
- 配置说明
- 启动
- kibana
- kibana下载
- kibana配置文件
- kibana常用功能
- 常用术语
- Beats
- Beats简介
- Filebeat
- Packetbeat
- Logstash
- 配置
- elasticsearch架构
- es1.7
- head和bigdesk插件
- 插件大全
- 倒排索引
- 单模式下API增删改查
- mget获取多个文档
- 批量操作bulk
- 版本控制
- Mapping映射
- 基本查询
- Filter过滤
- 组合查询
- es配置文件
- es集群优化和管理
- logstash
- kibana
- es5.2
- 安装
- 冲突处理
- 数据备份
- 缺陷不足
- 集群管理api
- 分布式事务
- CAP理论
- BASE模型
- 两阶段提交(2PC)
- TCC (Try-Confirm-Cancle)
- 异步确保型
- 最大努力通知型
- 总结