016-elasticsearch【五】-Query DSL【1】-查询上下文,过滤上下文、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": {}
    }
}

_score可以用boost参数改变:

GET /_search
{
    "query": {
        "match_all": { "boost" : 1.2 }
    }
}

3.2、match_none

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

GET /_search
{
    "query": {
        "match_none": {}
    }
}

原文地址:https://www.cnblogs.com/bjlhx/p/8535383.html

时间: 2024-08-24 16:12:36

016-elasticsearch【五】-Query DSL【1】-查询上下文,过滤上下文、match_all的相关文章

SharePoint Search之(五)Query spelling correction— 查询拼写纠正

?? Query spelling correction 在使用搜索引擎的时候.假设一不小心输入错误,或者对于某个词语记得不太清楚,搜索引擎会自己主动纠正: 这个功能可以缩短用户的时间,很好用.在SharePoint 2013中.通过配置Search dictionary  能够实现类似的功能. SharePoint 2013自己维护了一个拼写词典.叫做默认拼写词典(default spelling dictionaries).这个拼写词典是SharePoint自己维护的,用户不能改动. 假设用

ElasticSearch search api的基础语法+Query DSL搜索+filter与query对比+组合查询+定位不合法的搜索

一. search api的基础语法 1.search语法 GET /search{} GET /index1,index2/type1,type2/search{} GET /_search{ "from": 0, "size": 10} 2.http协议中get是否可以带上request body HTTP协议,一般不允许get请求带上request body,但是因为get更加适合描述查询数据的操作,因此还是这么用了 GET /_search?from=0&a

Elasticsearch学习笔记(二)Search API 与 Query DSL

一. Search API eg: GET /mall/product/_search?q=name:productName&sort=price desc 特点:search的请求参数都是以HTTP请求的的query stirng 附带的 适用范围:适用于临时的在命令行使用一些工具,比如curl,快速的发出请求,来检索想要的信息: 适用于简单的查询条件 二.Query DSL 将Query DSL视为ASL查询则有两种类型的查询语句: 叶子查询语句(Leaf Query clause) : 叶

009-elasticsearch【三】示例数据导入、URI查询方式简介、Query DSL简介、查询简述【_source、match、must、should等】、过滤器、聚合

一.简单数据 客户银行账户信息,json { "account_number": 0, "balance": 16623, "firstname": "Bradshaw", "lastname": "Mckenzie", "age": 29, "gender": "F", "address": "2

Spring Boot 整合 Elasticsearch,实现 function score query 权重分查询

运行环境:JDK 7 或 8,Maven 3.0+技术栈:SpringBoot 1.5+,ElasticSearch 2.3.2 本文提纲一.ES 的使用场景二.运行 springboot-elasticsearch 工程三.springboot-elasticsearch 工程代码详解 一.ES 的使用场景 简单说,ElasticSearch(简称 ES)是搜索引擎,是结构化数据的分布式搜索引擎.在<Elasticsearch 和插件 elasticsearch-head 安装详解>  和

Elasticsearch Index API & Aggregations API & Query DSL

这篇小菜给大家演示和讲解一些Elasticsearch的API,如在工作中用到时,方便查阅. 一.Index API 创建索引库 curl -XPUT 'http://127.0.0.1:9200/test_index/' -d '{     "settings" : {       "index" : {       "number_of_shards" : 3,       "number_of_replicas" : 1

Query DSL for elasticsearch Query

Query DSL Query DSL (资料来自: http://www.elasticsearch.cn/guide/reference/query-dsl/) http://elasticsearch.qiniudn.com/ --简介-- elasticsearch 提供基于JSON的完整的Query DSL查询表达式(DSL即领域专用语言). 一般来说, 普通的查询如 term 或者 prefix. 另外还有混合查询如 bool 等. 另外查询表达式(Queries)还能够关联特定的过

[ElasticSearch]Java API 之 词条查询(Term Level Query)

1. 词条查询(Term Query)  词条查询是ElasticSearch的一个简单查询.它仅匹配在给定字段中含有该词条的文档,而且是确切的.未经分析的词条.term 查询 会查找我们设定的准确值.term 查询本身很简单,它接受一个字段名和我们希望查找的值. 下面代码查询将匹配 college 字段中含有"California"一词的文档.记住,词条查询是未经分析的,因此需要提供跟索引文档中的词条完全匹配的词条.请注意,我们使用小写开头的california来搜索,而不是Cali

Elasticsearch Query DSL 整理总结(三)—— Match Phrase Query 和 Match Phrase Prefix Query

目录 引言 Match Phase Query slop 参数 analyzer 参数 zero terms query Match Phrase 前缀查询 max_expansions 小结 参考文档 系列文章列表 Query DSL Java Rest Client API 引言 今天再读庄子的<逍遥游>,其中鲲鹏之扶摇直上九万里之气势,蜩(tiao)与学鸠之渺小之对比,令人印象深刻,并对鲲鹏之志心生向往.而郭象在注<庄子>卷中却说,"苟足于其性,则虽大鹏无以自贵于小