ElasticSearch 搜索 API
-
搜索 API
该API用于在Elasticsearch中搜索内容。用户可以通过发送带有查询字符串作为参数的get请求进行搜索,或者可以在发布请求的消息正文中发布查询。主要是所有搜索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 搜索
使用统一资源标识符,可以在搜索操作中传递许多参数-参数 描述 Q 此参数用于指定查询字符串。 lenient 此参数用于指定查询字符串。仅通过将此参数设置为true即可忽略基于格式的错误。 默认情况下为false。 fields 此参数用于指定查询字符串。 sort 我们可以使用此参数来获得排序结果,该参数的可能值为fieldName,fieldName:asc / fieldname:desc timeout 我们可以使用此参数来限制搜索时间,并且响应仅包含指定时间内的匹配。 默认情况下,没有超时。 terminate_after 对于每个分片,我们可以将响应限制为指定数量的文档,达到该数量后查询将提前终止。 默认情况下,没有terminate_after。 from 从匹配的索引开始到返回。 预设为0。 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" } } ] } }