二次评分

  查询出来结果后,进行二次评分;

  但是其实每个文档查询出来的结果是两次查询的分数之和,这个其实并不是很能讲的清楚;

多匹配控制

  多匹配是指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是全文检索,对于结构化的支持并不是很好,如果你的查询中真的强结构化的,最好选用支持全文检索的结构化查询数据库。

脚本

  1. 用于自定义打分规则;
  2. 用于Query阶段;
  3. ES支持的是Groovy脚本;
  4. 还支持Lucene语法;

  本文介绍的都是一些比较偏冷的用法,可能并不是真正的偏冷,而是相比于真正的全文检索,他的实现对于具体场景约束比较多,比如二次评分,重要词项聚合,都是一些特殊的场景对于非精确内容的查询;通过这些技术我们也看到了ES本质并不仅仅是查询的插件,还是一个为了模式匹配的工具,本文介绍的其实都是一些查询的模式,或者说查询的规则,查询的本质其实就是过滤规则来遍历存储单元(在ES里面,这几个存储单元就是文档);所以,我们在处理一个查询请求的时候,我们要分析一下这个请求的"查询模式是什么",搞清楚之后,再来考虑那种ES提供的查询工具可以满足需要。

  模型的分析,才是使用ES以及其他查询的关键。

ElasticSearch(三)不仅仅是查询的更多相关文章

  1. 第三百六十五节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)的基本查询

    第三百六十五节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)的基本查询 1.elasticsearch(搜索引擎)的查询 elasticsearch是功能 ...

  2. ElasticSearch第四步-查询详解

    ElasticSearch系列学习 ElasticSearch第一步-环境配置 ElasticSearch第二步-CRUD之Sense ElasticSearch第三步-中文分词 ElasticSea ...

  3. ElasticSearch(6)-结构化查询

    引用:ElasticSearch权威指南 一.请求体查询 请求体查询 简单查询语句(lite)是一种有效的命令行_adhoc_查询.但是,如果你想要善用搜索,你必须使用请求体查询(request bo ...

  4. elasticsearch组合多条件查询实现restful api以及java代码实现

    原文:http://blog.java1234.com/blog/articles/372.html elasticsearch组合多条件查询实现restful api以及java代码实现 实际开发中 ...

  5. elasticsearch 基础 —— 请求体查询

    请求体查询 简易 查询 -query-string search- 对于用命令行进行即席查询(ad-hoc)是非常有用的. 然而,为了充分利用查询的强大功能,你应该使用 请求体 search API, ...

  6. UE4物理模块(三)---碰撞查询(下)SAP/MBP/BVH算法简介

    在上一文中介绍了碰撞查询的配置方法: Jerry:UE4物理模块(三)---碰撞查询(上)​zhuanlan.zhihu.com 本篇介绍下UE4的各种零大小的射线检测,以及非零大小(带体积)的射线检 ...

  7. Elasticsearch中的Term查询和全文查询

    目录 前言 Term 查询 exists 查询 fuzzy 查询 ids 查询 prefix 查询 range 查询 regexp 查询 term 查询 terms 查询 terms_set 查询 t ...

  8. Elasticsearch使用系列-基本查询和聚合查询+sql插件

    Elasticsearch使用系列-ES简介和环境搭建 Elasticsearch使用系列-ES增删查改基本操作+ik分词 Elasticsearch使用系列-基本查询和聚合查询+sql插件 Elas ...

  9. Elasticsearch Span Query跨度查询

    ES基于Lucene开发,因此也继承了Lucene的一些多样化的查询,比如本篇说的Span Query跨度查询,就是基于Lucene中的SpanTermQuery以及其他的Query封装出的DSL,接 ...

  10. SQL总结(三)其他查询

    SQL总结(三)其他查询 其他常用的SQL,在这里集合. 1.SELECT INTO 从一个表中选取数据,然后把数据插入另一个表中.常用于创建表的备份或者用于对记录进行存档. 语法: SELECT c ...

随机推荐

  1. day 55 前端

    前端JQuery 语法 1 关于表格基数偶数背景颜色变换的 2 关于has后代   和not非 3 jQuery 和dom的转换  dom 转换成jQuery 用$(包起来) 不加引号 4  关于 n ...

  2. nodejs --- querystring模块.

    1. 序列化: querystring.stringify(对象, 参数2, 参数3) 第二个参数 设置 连接符   从 & 变为 , 第三个参数 设置 key  和value的中间符号,  ...

  3. ChinaCock界面控件介绍-CCLoadingIndicator

    这是一个显示等待状态的控件,当在线程中执行一个稍长时间的任务,需要显示一个等待过程,免得让用户不知app在做什么?避免用户寂寞. 先看看这个控件的属性说明: BackgroundTransparenc ...

  4. centos安装htop

    在 Linux 系统中,top 命令用来显示系统中正在运行的进程的实时状态,它显示了一些非常有用的信息,比如 CPU 利用情况.内存消耗情况,以及每个进程情况等.但是,你知道吗?还有另外一个命令行工具 ...

  5. ubantu创建python虚拟环境

    安装虚拟环境的命令如下: sudo pip install virtualenv sudo pip install virtualenvwrapper 创建虚拟环境的命令如下: mkvirtualen ...

  6. 莫烦tensorflow(1)-训练线性函数模型

    import tensorflow as tfimport numpy as np #create datax_data = np.random.rand(100).astype(np.float32 ...

  7. spring 事务控制 设置手动回滚 TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();

    //假设这是一个service类的片段 try{ //出现异常 } catch (Exception e) { e.printStackTrace(); //设置手动回滚 TransactionAsp ...

  8. SQL注入之Sqli-labs系列第二十五关(过滤 OR & AND)和第二十五A关(过滤逻辑运算符注释符)

    开始挑战第二十五关(Trick with OR & AND) 第二十五关A(Trick with comments) 0x1先查看源码 (1)这里的or和and采用了i正则匹配,大小写都无法绕 ...

  9. [转]Cross-type joins in Elasticsearch

    Cross-type joins in Elasticsearch http://rore.im/posts/elasticsearch-joins December 31, 2014 When mo ...

  10. 对jQuery ajax的认识

    1.ajax() 方法通过 HTTP 请求加载远程数据. 2.该方法是 jQuery 底层 AJAX 实现.简单易用的高层实现见 $.get, $.post 等.$.ajax() 返回其创建的 XML ...