Elastic Search 学习笔记
Reference
- 6.4最新版英文:https://www.elastic.co/guide/...
- 中文:https://www.elastic.co/guide/...
- 5.4中文:http://cwiki.apachecn.org/pag...
Defination
DSL(Domain Specific Language):Elasticsearch 定义的查询语言
ES字段类型:https://blog.csdn.net/chengyu...
API
Stats API:获取索引统计信息(http://cwiki.apachecn.org/pag...)
GET es-index_*/_stats {"_shards": {"total": 622,"successful": 622,"failed": 0},//返回的统计信息是索引级的聚合结果,具有primaries和total的聚合结果。其中primaries只是主分片的值,total是主分片和副本分片的累积值。"_all": {"primaries": {"docs": { //文档和已删除文档(尚未合并的文档)的数量。注意,此值受刷新索引的影响。"count": 2932357017,"deleted": 86610},"store": { //索引的大小。"size_in_bytes": 2573317479532,}, "indexing": {}, //索引统计信息,可以用逗号分隔的type列表组合,以提供文档级统计信息。"get": {}, // get api调用统计"search": {}, // search api 调用统计},"total": {}} }
Search API(两种形式)
using a simple query string as a parameter
GET es-index_*/_search?q=eventid:OMGH5PageView
using a request body
GET es-index_*/_search {"query": {"term": {"eventid": {"value": "OMGH5PageView"}}} }
Query DSL
Leaf Query Clause: 叶查询子句
Compound Query Clause: 复合查询子句
DSL查询上下文
- query context
在查询上下文中,回答的问题是:How well does this document match this query clause?
除了判断一条数据记录(document)是否匹配查询条件以外,还要计算其相对于其他记录的匹配程度,通过_score进行记录。 - filter context**
在查询上下文中,回答的问题是:Does this document match this query clause?
仅判断document是否匹配,不计算_score
一般用来过滤结构化数据,
e.g. timestamp是否在2017-2018范围内,status是否是published
频繁使用的过滤器会被Elasticsearch自动缓存,可提高性能
** 查询时,可先使用filter过滤操作过滤数据,然后使用query查询匹配数据
查询结果字段过滤
fields:字段过滤
script_fields:可对原始数据进行计算
"fields": ["eh"], //仅返回eh字段
"script_fields": {"test": {"script": "doc['eh'].value*2"}
} // 返回eh字段值*2的数据并命名为test字段
查询过滤:query
bool 组合过滤器
{"bool" : {"must" : {}, // 所有的语句都必须匹配,相当于SQL中的and"must_not" : {}, // 所有的语句都不能匹配,相当于SQL中的not"should" : {}, // 至少有一个语句要匹配,相当于SQL中的OR"filter" : {}, // }
}
filtered过滤器
{"filtered": {"query": {},"filter": {} // 在filter中进行数据过滤,然后再去query中进行匹配}
}
match和term
match(模糊匹配):先检查字段类型是否是analyzed,如果是,则先分词,再去去匹配token;如果不是,则直接去匹配token。
term(精确匹配):直接去匹配token。
terms: 多项查询
{ terms : { user: ['tony', 'kitty' ] } }
range范围过滤
对于date类型字段的范围选择可以使用 Date Math
{"range" : {"born" : {"gte": "01/01/2012","lte": "2013","format": "dd/MM/yyyy||yyyy" }}}{"range" : {"timestamp" : {"gte": "now-6d/d", // Date Math"lte": "now/d", // Date Math"time_zone": "+08:00" // 时区}}}
exists 该条记录是否存在某个字段
{"exists" : { "field" : "user" }
}
wildcard: 通配符查询(对分词进行匹配查询)
Note that this query can be slow, as it needs to iterate over many terms. In order to prevent extremely slow wildcard queries, a wildcard term should not start with one of the wildcards * or ?
wildcard查询性能较差,尽量避免使用*或?开头来进行wildcard匹配
prefix: 前缀查询
regexp: 正则表达式查询
Tips
value带-的特殊处理
value带了-,则默认会被切词,导致搜索结果不准确。解决办法之一就是在字段那里加个.raw
term: {status:'pre-active'} => term: {status.raw: 'pre-active'}
sort
GET es-index_*/_search
{"fields" : ["eventid", "logtime"],"query": {"term": {"eventid": {"value": "OMGH5PageView"}}},"sort": [{"logtime": {"order": "asc"}}]
}
聚合aggregation
date_histogram
(和 histogram 一样)默认只会返回文档数目非零的 buckets。 即使 buckets
中没有文档我们也想返回。可以通过设置两个额外参数来实现这种效果:
"min_doc_count" : 0, // 这个参数强制返回空 buckets。
"extended_bounds" : { // 强制返回整年"min" : "2014-01-01","max" : "2014-12-31"
}
查询返回结果参数
took: 查询返回的时间(单位:毫秒)
time_out: 查询是否超时
_shards: 描述查询分片的信息,包括:查询了多少分片,成功的分片数量,失败的分片数量等
hits:搜索的结果
total: 满足查询条件的文档数
max_score:
hits: 满足条件的文档
_score: 文档的匹配程度
Elastic Search 学习笔记相关推荐
- Elastic Search学习笔记
一:单机模式 数据格式 Elasticsearch是面向文档型数据库,一条数据在这里就是一个文档.为了方便大家理解,我们将Elasticsearch里存储文档 数据和关系型数据库 MySQL存储数据的 ...
- Elastic Search学习笔记5——基本操作
2019独角兽企业重金招聘Python工程师标准>>> 创建索引 1.非结构化创建 在head页面上打开"索引",点击新建索引,输入 索引名称.分片数和副本数 2 ...
- Selective Search 学习笔记
Selective Search 潜水CSDN好多年,第一次写东西,在北大这边做毕业设计,做的是关于对象部件检测的课题,也就是从粗到细的检测,前段时间开始学习RCNN相关的东西,读了paper,这几天 ...
- Elastic Job学习笔记
目标: 第一章:概述 1.理解任务调度的概念 2.理解分布式任务调度的概念 3.能够说出Elastic-Job是什么 第二章:Elastic-Job快速入门 1.能够搭建Elastic-Job快速入门 ...
- Selective Search学习笔记
Selective Search 方法主要有三个优势: 捕捉不同尺度 capture all scales 多样化 diversification 快速计算 fast to compute 总结为:选 ...
- Elastic Search 中文拼音搜索补全实战
引言 搜索提示是搜索框一个比较基础的功能,他赋予了搜索框生命,提高了用户的搜索体验.本文通过仿写 boss 直聘首页职位公司搜索,来实现一个自己搜索提示功能. 需求分析 搜索提示的情况比较多,比如根据 ...
- ElasticSearch 学习笔记:Multi Search
本文目录 1 简介 2 格式 3 header格式 4 body格式 5 返回格式 6 性能 7 相关文章 1 简介 批量查询接口(Multi Search API)允许在一次请求中执行多个查询操作, ...
- [初窥目标检测]——《目标检测学习笔记(2):浅析Selective Search论文——“Selective Search for object recognition”》
[初窥目标检测]--<目标检测学习笔记(2):浅析Selective Search论文--Selective Search for object recognition> 本文介绍 前文我 ...
- elastic search搜索学习打分算法简单总结
elastic search搜索学习打分算法简单总结 之前也在es官网走马观花的看了一些es搜索方面的内容,发现自己之前对es的打分规则理解的很浅,最近又从阿里的<elastic stack实战 ...
- Elasticsearch核心技术与实战学习笔记 43 | 分页与遍历:From, Size, Search After Scroll API
一 序 本文属于极客时间Elasticsearch核心技术与实战学习笔记系列. 二 分页 2.1 From / Size 默认情况下,查询按照相关度算分排序,返回前 10 条记录 容易理解的分页方案 ...
最新文章
- [数据结构] 散列表(哈希表)
- Spring MVC 如何加载静态html
- java多线程中方法_java中多线程 - 多线程中的基本方法
- 家用电器用户行为分析与事件识别代码详解+修改后运行无误的代码
- Java中数据类型的取值范围
- 对C# 程序员来说现在是到目前为止最好的时代
- python向量化和c哪个快_在python中向量化6 for循环累积和
- error:java:无效的源发行版_IDEA java出现无效的源发行版14解决方案_java
- 如何用好消息推送(push)做APP运营
- java在原文件替换_Java:创建临时文件并替换为原始文件
- php class variable,PHP中的變量類擴展 - 是否可能?
- js $.inArray
- Java基础之时间的友好显示
- java计算机毕业设计英语课程学习网站源程序+mysql+系统+lw文档+远程调试
- 浮点型数据在内存中是如何存储的
- [HNOI 2017] bzoj4826 影魔 [单调栈+扫描线]
- 69个经典Java面试题和答案详解,手慢无
- 多个迹象表明,瑞幸咖啡已进入新的发展阶段
- 记一次docker进不去容器的经历
- COGS 1043. [Clover S2] Freda的迷宫
热门文章
- 2019,别进大厂了!
- mysql存储过程详细教程6_存储过程详解(示例代码)
- 显微镜自动聚焦原理是什么_自动玻璃感应门原理是什么?看看东莞装修网怎么说...
- linux怎么安装网卡驱动固件,Linux网卡驱动的安装方式
- linux popen阻塞_linux popen()与system()的区别
- C语言substr函数用法,自己实现substr函数——C语言
- 用户名_网络安全与防御-OpenSSH用户名枚举及其检测方法
- linux查看cpt硬盘命令,Linux基础知识复习之命令篇
- python 线程-threding示例使用
- php post 漏洞_漏洞研究|ThinkPHP request函数远程代码执行