搜索请求实体(Request Body Search)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了搜索请求实体(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

以上是关于搜索请求实体(Request Body Search)的主要内容,如果未能解决你的问题,请参考以下文章

Request.body 在第二次发布请求中未定义

解决 413 Request Entity Too Large(请求实体太大)

在播放框架中上传表单错误 413 请求实体太大

HTTP协议

Request 内容实体body的简单例子 PART3

Request 内容实体body的简单例子 PART3