016-elasticsearch-Query DSL-查询上下文,过滤上下文match_all

Posted 木子旭

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了016-elasticsearch-Query DSL-查询上下文,过滤上下文match_all相关的知识,希望对你有一定的参考价值。

一、概述

Elasticsearch提供基于JSON的完整查询DSL来定义查询。将Query DSL视为查询的AST,由两种类型的子句组成:

叶子查询子句  

  叶子查询子句在特定字段中查找特定值,例如匹配,词条或范围查询。这些查询可以自己使用。

复合查询子句

  复合查询子句包装其他叶或复合查询,并用于以逻辑方式(例如bool或dis_max查询)组合多个查询,或者改变它们的行为(如constant_score查询)。

查询子句的行为有所不同,具体取决于它们是在查询上下文还是过滤器上下文中使用。

二、查询过滤上下文

  查询子句的行为取决于它在查询上下文中还是在过滤器上下文中使用:

 查询上下文

  在查询上下文中使用的查询子句回答了“这个文档如何与此查询子句匹配?”的问题。除了决定文档是否匹配之外,查询子句还会计算一个_score,表示文档与其他文档的匹配程度。

过滤上下文

  在过滤器上下文中,查询子句回答“这个文档是否匹配这个查询子句”这个问题?答案是一个简单的是或否 - 没有计算分数。过滤器上下文主要用于过滤结构化数据,例如

    此时间戳记是否在2015至2016年范围内?

    状态字段是否设置为“已发布”?

  经常使用的过滤器将被Elasticsearch自动缓存,以提高性能。 过滤器上下文在查询子句传递给过滤器参数时生效,如bool查询中的filter或must_not参数,constant_score查询中的filter参数或过滤器聚合。

以下是搜索API中查询和过滤器上下文中使用的查询子句的示例。此查询将匹配满足以下所有条件的文档:

    标题字段包含单词Search。

    内容字段包含单词elasticsearch。

    状态字段包含published单词。

    publish_date字段包含从2015年1月1日起的日期。

GET /_search
{
//查询参数指示查询上下文。
  "query": { 
//在查询上下文中使用bool和两个匹配子句,这意味着它们用于评估每个文档的匹配程度。
    "bool": { 
      "must": [
        { "match": { "title":   "Search"        }}, 
        { "match": { "content": "Elasticsearch" }}  
      ],
//过滤器参数指示过滤器上下文。
      "filter": [ 
//term和range范围子句用于过滤器上下文中。他们会过滤掉不匹配的文件,但不会影响匹配文件的分数。
        { "term":  { "status": "published" }}, 
        { "range": { "publish_date": { "gte": "2015-01-01" }}} 
      ]
    }
  }
}

  在查询上下文中使用查询子句来处理会影响匹配文档分数(即文档匹配程度如何)的条件,并在过滤器上下文中使用所有其他查询子句。

三、匹配所有查询

3.1、match_all

最简单的查询,匹配所有文档,给他们所有的1.0的_score。

技术分享图片
GET /_search
{
    "query": {
        "match_all": {}
    }
}
View Code

_score可以用boost参数改变:

技术分享图片
GET /_search
{
    "query": {
        "match_all": { "boost" : 1.2 }
    }
}
View Code

3.2、match_none

这是match_all查询的逆过程,它不匹配任何文档。

技术分享图片
GET /_search
{
    "query": {
        "match_none": {}
    }
}
View Code

 

以上是关于016-elasticsearch-Query DSL-查询上下文,过滤上下文match_all的主要内容,如果未能解决你的问题,请参考以下文章

nodejs中正则

laravel 日志分析

《Web安全渗透全套教程(40集)》学习笔记 | 文d件d包d含d渗d透d原理及实验

水环境指标 中文对照

正则表达式 实现计算器

Lua中的正则表达式