Elasticsearch - 搜索API



此API用于搜索Elasticsearch中的内容。用户可以通过发送带有查询字符串作为参数的GET请求进行搜索,或者可以在POST请求的消息正文中发布查询。主要所有搜索API都是多索引、多类型的。

多索引

Elasticsearch允许我们搜索所有索引或某些特定索引中存在的文档。例如,如果我们需要搜索所有名称包含“central”的文档,我们可以按如下所示操作:

GET /_all/_search?q=city:paprola 

运行上述代码后,我们将获得以下响应:

{
   "took" : 33,
   "timed_out" : false,
   "_shards" : {
      "total" : 7,
      "successful" : 7,
      "skipped" : 0,
      "failed" : 0
   },
   "hits" : {
      "total" : {
         "value" : 1,
         "relation" : "eq"
      },
      "max_score" : 0.9808292,
      "hits" : [
         {
            "_index" : "schools",
            "_type" : "school",
            "_id" : "5",
            "_score" : 0.9808292,
            "_source" : {
               "name" : "Central School",
               "description" : "CBSE Affiliation",
               "street" : "Nagan",
               "city" : "paprola",
               "state" : "HP",
               "zip" : "176115",
               "location" : [
                  31.8955385,
                  76.8380405
               ],
               "fees" : 2200,
               "tags" : [
                  "Senior Secondary",
                  "beautiful campus"
               ],
               "rating" : "3.3"
            }
         }
      ]
   }
}

URI 搜索

可以使用统一资源标识符 (URI) 在搜索操作中传递许多参数:

序号 参数 & 描述
1

Q

此参数用于指定查询字符串。

2

lenient

此参数用于指定查询字符串。通过将此参数设置为true,可以忽略基于格式的错误。默认为false。

3

fields

此参数用于指定查询字符串。

4

sort

我们可以使用此参数获取排序结果,此参数的可能值为fieldName,fieldName:asc/fieldname:desc

5

timeout

我们可以使用此参数限制搜索时间,并且响应只包含在指定时间内的命中结果。默认情况下,没有超时。

6

terminate_after

我们可以将响应限制为每个分片指定数量的文档,达到该数量后,查询将提前终止。默认情况下,没有terminate_after。

7

from

要返回的命中的起始索引。默认为0。

8

size

表示要返回的命中数。默认为10。

请求体搜索

我们也可以在请求体中使用查询DSL指定查询,之前的章节已经给出许多示例。这里给出一个这样的示例:

POST /schools/_search
{
   "query":{
      "query_string":{
         "query":"up"
      }
   }
}

运行上述代码后,我们将获得以下响应:

{
   "took" : 11,
   "timed_out" : false,
   "_shards" : {
      "total" : 1,
      "successful" : 1,
      "skipped" : 0,
      "failed" : 0
   },
   "hits" : {
      "total" : {
         "value" : 1,
         "relation" : "eq"
      },
      "max_score" : 0.47000363,
      "hits" : [
         {
            "_index" : "schools",
            "_type" : "school",
            "_id" : "4",
            "_score" : 0.47000363,
            "_source" : {
               "name" : "City Best School",
               "description" : "ICSE",
               "street" : "West End",
               "city" : "Meerut",
               "state" : "UP",
               "zip" : "250002",
               "location" : [
                  28.9926174,
                  77.692485
               ],
               "fees" : 3500,
               "tags" : [
                  "fully computerized"
               ],
               "rating" : "4.5"
            }
         }
      ]
   }
}
广告
© . All rights reserved.