搜索请求实体(Request Body Search)

Request Body Search

  可以使用搜索DSL来执行搜索请求,再其请求体中包括Query DSL。这是一个例子:

GET /twitter/tweet/_search
{
    "query" : {
        "term" : { "user" : "kimchy" }
    }
}

  这里是一个示例响应:

{
    "took": 1,
    "timed_out": false,
    "_shards":{
        "total" : 1,
        "successful" : 1,
        "failed" : 0
    },
    "hits":{
        "total" : 1,
        "max_score": 1.3862944,
        "hits" : [
            {
                "_index" : "twitter",
                "_type" : "tweet",
                "_id" : "0",
                "_score": 1.3862944,
                "_source" : {
                    "user" : "kimchy",
                    "message": "trying out Elasticsearch",
                    "date" : "2009-11-15T14:12:12",
                    "likes" : 0
                }
            }
        ]
    }
}

Parameters


timeout


搜索超时,限制在指定时间值内执行的搜索请求,并在到期时积累的命中保释。默认为无超时。请参阅“Time unitsedit”一节


from


从某个偏移量中检索匹配。默认为0。


size


要返回的命中数。默认为10。如果您不关心返回的命中,但仅关于匹配and/or聚合的数量,将值设置为0将有助于提高性能。


search_type


要执行的搜索操作的类型。可以是dfs_query_then_fetch或query_then_fetch。默认为query_then_fetch。查看搜索类型了解更多。


request_cache


设置为true或false以启用或禁用大小为0的请求的搜索结果的缓存,即聚合和建议(不返回顶部匹配)。请参阅Shard请求缓存


terminate_after


每个分片收集的最大文档数量,到达时查询执行将提前终止。如果设置,响应将有一个布尔字段terminate_early来指示查询执行是否实际已终止。默认没有terminate_after。

  在上述中,search_type和request_cache必须作为查询字符串参数传递。搜索请求的其余部分应在主体本身内传递。请求体内容也可以作为名为source的REST参数传递。

  HTTP GET和HTTP POST都可以通过请求体来执行搜索。由于并非所有客户端都支持请求体GET,POST也是允许的。

Fast check for any matching docs(快速检查任何匹配的文档)

  如果我们只想知道是否有匹配特定查询的文档,我们可以将大小设置为0,表示我们对搜索结果不感兴趣。此外,我们可以将terminate_after设置为1,以指示每当找到第一个匹配文档(每个分片)时,查询执行可以被终止。

GET /_search?q=message:elasticsearch&size=0&terminate_after=1

  响应将不会包含任何匹配,因为大小设置为0。hits.total将等于0,表示没有匹配的文档,或大于0表示在提前终止时至少有相同数量的匹配查询文档。此外,如果查询提前终止,则在响应中将terminate_early标志设置为true。

{
  "took": 3,
  "timed_out": false,
  "terminated_early": true,
  "_shards": {
    "total": 1,
    "successful": 1,
    "failed": 0
  },
  "hits": {
    "total": 1,
    "max_score": 0.0,
    "hits": []
  }
}

  

原文地址:https://www.elastic.co/guide/en/elasticsearch/reference/5.0/search-request-body.html

时间: 2024-10-10 09:27:32

搜索请求实体(Request Body Search)的相关文章

请求(Request)的参数(Parameter)里包含特殊字符(#等)的正确处理方式

遇到一个问题 在一个地址链接(URL)里使用  url?param1=val1&param2=val2  的方式传递参数,结果在获取参数值时发现不是当初设定的值. 具体案例 以特殊字符井号(#)为例. 部分参数值丢了 JS里设置参数 window.location="some_web_project/xxx.jsp?param_key=abc#xyz"; Java中取参数值 Sting paramVal = request.getParameter("param_ke

微信应用号小程序发起请求wx.request(OBJECT)

微信应用号小程序发起请求wx.request(OBJECT) wx.request(OBJECT) ? wx.request发起的是https请求.一个微信小程序,同时只能有5个网络请求连接. OBJECT参数说明: 参数名 类型 必填 说明 url String 是 开发者服务器接口地址 data Object.String 否 请求的参数 header Object 否 设置请求的header , header中不能设置Referer method String 否 默认为GET,有效值:O

访问请求参数request.getParameter()

访问请求参数request.getParameter() 制作人:全心全意 getParameter() 例: 传递参数页: <%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <%@ page import="java.util.Date"%> <%@ page import

iis7 https 发生413错误 未显示页面,因为请求实体过大

- 问题描述 在IIS上部署一个可以接受文件上传的netCore WebApi,使用`Http`验证时没有任何问题,使用`SSL`后:通过微信小程序Post文件流,就会导致异常:`未显示页面 因为请求实体过大`的413 错误:但是在 Chrome 内核的微信小程序编辑工具中,则不存在该问题. - 问题原因 客户端发起一个请求后,IIS会收到足以解析请求标头的数据,但不会收到整个请求实体正文,如果发现需要客户端证书时,将尝试重新协商连接:但此时客户端正等待向IIS发送请求中的其余数据.因此,如果让

iOS 请求出现 &quot;Request failed: bad request (400)&quot;

主要出现如下错误: 请求失败-Error Domain=com.alamofire.error.serialization.response Code=-1011 "Request failed: bad request (400)" UserInfo={com.alamofire.serialization.response.error.response=<NSHTTPURLResponse: 0x7cec30d0> { URL: https://api.weibo.co

小程序之发起请求 wx.request(object)的坑

这是官方的API,然后官方的实例中 wx.request({ url: 'test.php', //仅为示例,并非真实的接口地址 data: { x: '' , y: '' }, header: { 'content-type': 'application/json' }, success: function(res) { console.log(res.data) } }):假如你按着官方的文档写你就掉坑里了,你会发现请求回来的数据在调试的时候可以看见,等放到手机真机预览的时候你就发现请求回来

python web开发-flask中访问请求数据request

Request对象在web应用的开发中是一个非常重要的对象,主要用来获取用户发来的请求数据. 常用属性参考:http://docs.jinkan.org/docs/flask/api.html#flask.request 下面我们以一个表单提交的例子来说明一些常用request属性的使用. 1. 创建一个表单的template 在templates文件夹下面创建form.html模板文件,输入下面的代码 {% extends "base.html" %} {% import "

[转]Google Chrome/IE/FireFox查看HTTP请求头request header响应头

chrome查看网页header,鼠标右键打开审查元素,或快捷键Shift+Ctrl+I或者shift+ctrl+c当我打开Network后,发现里面是空的什么也没有.查了下,才知,需要刷新页面才能显示出来. 想了想也是应该,只有重新载入网页,chrome才能捕获header信息. 据说这个功能很好很强大,可以用来找到隐藏的视频文件源地址.很多非专业人士用审查元素好像也就是来干这个. IE和FireFox查看页面header信息需要插件IE:HttpWatch,Fiddler2FireFox:F

urllib基础-请求对象request

简单的案例-爬取百度首页 1 from urllib import request 2 ''' 3 爬取百度首页 4 ''' 5 # 确定爬去目标 6 base_url = 'http://www.baidu.com' 7 8 # 发起http请求 返回一个类文件对象 9 response = request.urlopen(url=base_url) 10 11 # 获取相应内容 12 html = response.read() 13 14 # 把bytes类型转换成utf-8编码的字符串类