ElasticSearch(三)不仅仅是查询
二次评分
查询出来结果后,进行二次评分;
但是其实每个文档查询出来的结果是两次查询的分数之和,这个其实并不是很能讲的清楚;
多匹配控制
多匹配是指multi-match,控制则是指一下的几种控制方式:
best_field:多个字段,相同的查询内容,例如:
上面的查询将会被解析为多个match子句:
cross_field:至少一个字段包含指定的词项;
most_field:至少一个字段满足所有的词项;
phase_field:将请求翻译为match_phrase;
上述的描述其实并不准确和全面,但是多匹配控制本质就是指定多个字段,来匹配同一个词项/短语;那么多个字段是以怎样的方式来匹配词项/ 短语,上述四种各不相同;具体如果需要了解详细,可以查看官方文档;
重要词项聚合(significant terms aggregation)
这个算法更加复杂,是比较词项在文档出现的频率(后台)和该词项在检索结果中出现的频率,如果两者差别比较大,则做返回,否则过滤掉。下面有一篇博客介绍这个算法的用法,没有深入研究。
https://www.elastic.co/blog/significant-terms-aggregation
文档分组
查询的结果按照某个维度进行分组,比如按照年份,这样查询的数据将会被放到对应的bucket之中去,然后可以指定每个bucket都返回top N,这样就实现了某个分组的数据排序,过滤,控制返回数据量。
文档关系
文档关系主要两种:对象和嵌套,但是要注意,ES是全文检索,对于结构化的支持并不是很好,如果你的查询中真的强结构化的,最好选用支持全文检索的结构化查询数据库。
脚本
- 用于自定义打分规则;
- 用于Query阶段;
- ES支持的是Groovy脚本;
- 还支持Lucene语法;
本文介绍的都是一些比较偏冷的用法,可能并不是真正的偏冷,而是相比于真正的全文检索,他的实现对于具体场景约束比较多,比如二次评分,重要词项聚合,都是一些特殊的场景对于非精确内容的查询;通过这些技术我们也看到了ES本质并不仅仅是查询的插件,还是一个为了模式匹配的工具,本文介绍的其实都是一些查询的模式,或者说查询的规则,查询的本质其实就是过滤规则来遍历存储单元(在ES里面,这几个存储单元就是文档);所以,我们在处理一个查询请求的时候,我们要分析一下这个请求的"查询模式是什么",搞清楚之后,再来考虑那种ES提供的查询工具可以满足需要。
模型的分析,才是使用ES以及其他查询的关键。
ElasticSearch(三)不仅仅是查询的更多相关文章
- 第三百六十五节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)的基本查询
第三百六十五节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)的基本查询 1.elasticsearch(搜索引擎)的查询 elasticsearch是功能 ...
- ElasticSearch第四步-查询详解
ElasticSearch系列学习 ElasticSearch第一步-环境配置 ElasticSearch第二步-CRUD之Sense ElasticSearch第三步-中文分词 ElasticSea ...
- ElasticSearch(6)-结构化查询
引用:ElasticSearch权威指南 一.请求体查询 请求体查询 简单查询语句(lite)是一种有效的命令行_adhoc_查询.但是,如果你想要善用搜索,你必须使用请求体查询(request bo ...
- elasticsearch组合多条件查询实现restful api以及java代码实现
原文:http://blog.java1234.com/blog/articles/372.html elasticsearch组合多条件查询实现restful api以及java代码实现 实际开发中 ...
- elasticsearch 基础 —— 请求体查询
请求体查询 简易 查询 -query-string search- 对于用命令行进行即席查询(ad-hoc)是非常有用的. 然而,为了充分利用查询的强大功能,你应该使用 请求体 search API, ...
- UE4物理模块(三)---碰撞查询(下)SAP/MBP/BVH算法简介
在上一文中介绍了碰撞查询的配置方法: Jerry:UE4物理模块(三)---碰撞查询(上)zhuanlan.zhihu.com 本篇介绍下UE4的各种零大小的射线检测,以及非零大小(带体积)的射线检 ...
- Elasticsearch中的Term查询和全文查询
目录 前言 Term 查询 exists 查询 fuzzy 查询 ids 查询 prefix 查询 range 查询 regexp 查询 term 查询 terms 查询 terms_set 查询 t ...
- Elasticsearch使用系列-基本查询和聚合查询+sql插件
Elasticsearch使用系列-ES简介和环境搭建 Elasticsearch使用系列-ES增删查改基本操作+ik分词 Elasticsearch使用系列-基本查询和聚合查询+sql插件 Elas ...
- Elasticsearch Span Query跨度查询
ES基于Lucene开发,因此也继承了Lucene的一些多样化的查询,比如本篇说的Span Query跨度查询,就是基于Lucene中的SpanTermQuery以及其他的Query封装出的DSL,接 ...
- SQL总结(三)其他查询
SQL总结(三)其他查询 其他常用的SQL,在这里集合. 1.SELECT INTO 从一个表中选取数据,然后把数据插入另一个表中.常用于创建表的备份或者用于对记录进行存档. 语法: SELECT c ...
随机推荐
- 利用Hackrf One进行GPS定位欺骗制作超级跑马机
0×00 驾校的困惑 现行规定要求每个学员都必须在驾校练习够规定的学时,才能参加考试,在每台教练车上都安装有计时计程终端,学员刷卡刷指纹后开始累计里程.但是目前中国的很多驾校,存在车少人多的情况,假设 ...
- Python中读取文件中的json串,并将其写入到Excel表格中
Json:JavaScript Objective Notation,是一种轻量级的数据交换格式.Json最广泛的应用是作为AJAX中web服务器和客户端的通讯的数据格式.现在也常用语http请求中, ...
- js- 类数组对象
JavaScript中,数组是一个特殊的对象,其property名为正整数,且其length属性会随着数组成员的增减而发生变化,同时又从Array构造函数中继承了一些用于进行数组操作的方法. 而对于一 ...
- Spring架构-01-微服务架构
一.单体架构 所有功能,所有模块都耦合在一个系统里面,如传统的一MVC. 需要重新编译测试,重新部署. 伸缩性差 可靠性差 系统迭代困难 跨开发语言程序低 团队协作麻烦 二.微服务架构 常见架构风格: ...
- [转]SSH反向连接及Autossh
http://www.cnblogs.com/eshizhan/archive/2012/07/16/2592902.html SSH反向连接及Autossh 0.接触Linux恐怕对SSH再熟悉不过 ...
- Fizz Buzz 问题
要求: 给你一个整数n. 从 1 到 n 按照下面的规则打印每个数: 如果这个数被3整除,打印fizz. 如果这个数被5整除,打印buzz. 如果这个数能同时被3和5整除,打印fizz buzz. 示 ...
- 【编程基础】编译器 cc、gcc、g++、CC 的区别
参考 1. 编译器 cc.gcc.g++.CC 的区别; 完
- css实现三栏布局,两边定宽,中间自适应
1.利用定位实现 css代码如下: .box{overflow: hidden;height: 100px;margin: 10px 0;} .box>div{height: 100%;} #b ...
- 2018.4.23 git常用操作命令收集(转)
Git常用操作命令收集: 1. 远程仓库相关命令 检出仓库:$ git clone git://github.com/jquery/jquery.git 查看远程仓库:$ git remote -v ...
- Install Java on Ubuntu server
准备工作 a) 获得超级用户权限 关于超级用户访问权限的说明: 要将 Java 安装在系统级位置(例如 /usr/java),则必须以超级用户身份登录,从而获得必要的权限.如果您不具有超级用户访问权限 ...