大神地址:https://blog.youkuaiyun.com/ctwy291314/article/details/82744548
有两种形式的 搜索 API:一种是 “轻量的” 查询字符串 版本,要求在查询字符串中传递所有的 参数,另一种是更完整的 请求体 版本,要求使用 JSON 格式和更丰富的查询表达式作为搜索语言。
查询字符串搜索非常适用于通过命令行做即席查询。例如,查询在 tweet 类型中 tweet 字段包含 elasticsearch 单词的所有文档:
curl -X GET "localhost:9200/_all/tweet/_search?q=tweet:elasticsearch"
URI搜索
可以通过提供请求参数使用URI来执行搜索请求。使用此模式执行搜索时,并非所有搜索选项都会暴露。这是一个例子:
GET twitter/_search?q=user:kimchy
示例响应:
{
"timed_out": false,
"took": 62,
"_shards":{
"total" : 1,
"successful" : 1,
"skipped" : 0,
"failed" : 0
},
"hits":{
"total" : 1,
"max_score": 1.3862944,
"hits" : [
{
"_index" : "twitter",
"_type" : "_doc",
"_id" : "0",
"_score": 1.3862944,
"_source" : {
"user" : "kimchy",
"date" : "2009-11-15T14:12:12",
"message" : "trying out Elasticsearch",
"likes": 0
}
}
]
}
}
参数
URI中允许的参数是:
名称 | 描述 |
---|---|
q | 查询字符串(映射到query_string查询,有关详细信息,请参阅 查询字符串查询)。 |
df | 在查询中未定义字段前缀时使用的默认字段。 |
analyzer | 分析查询字符串时要使用的分析器名称。 |
analyze_wildcard | 是否应分析通配符和前缀查询。默认为false。 |
batched_reduce_size | 应在协调节点上一次减少的分片结果数。如果请求中潜在的分片数量很大,则应将此值用作保护机制,以减少每个搜索请求的内存开销。 |
default_operator | 要使用的默认运算符可以是AND或 OR。默认为OR。 |
lenient | 如果设置为true将导致忽略基于格式的失败(如向数字字段提供文本)。默认为false。 |
explain | 对于每个命中,包含如何计算命中得分的解释。 |
_source | 设置为false禁用_source字段检索。您还可以使用_source_include&检索部分文档_source_exclude( 有关详细信息,请参阅请求正文文档) |
stored_fields | 每个匹配返回的文档的选择性存储字段,逗号分隔。不指定任何值将导致没有字段返回。 |
sort | 排序执行。可以是fieldName或 fieldName:asc/ 的形式fieldName:desc。fieldName可以是文档中的实际字段,也可以是特殊_score名称,表示基于分数的排序。可以有几个sort参数(顺序很重要)。 |
track_scores | 排序时,设置为true仍然跟踪分数并将其作为每次命中文档的一部分返回。 |
track_total_hits | 设置为false禁用跟踪与查询匹配的匹配总数。(有关详细信息,请参阅索引排序)。默认为true。 |
timeout | 搜索超时,将搜索请求限制在指定的时间值内执行,并使用在到期时累积的命中文档数进行保释。默认为无超时。 |
terminate_after | 在达到查询执行将提前终止时,为每个分片收集的最大文档数。如果设置,则响应将具有一个布尔字段,terminated_early以指示查询执行是否实际上已终止。默认为no terminate_after。 |
from | 从命中的索引开始返回。默认为0。 |
size | 要返回的命中的文档个数。默认为10。 |
search_type | 要执行的搜索操作的类型。可以是 dfs_query_then_fetch或query_then_fetch。默认为query_then_fetch。有关可以执行的不同搜索类型的更多详细信息,请参阅 搜索类型。 |
allow_partial_search_results | false如果请求将产生部分结果,则设置为返回整体故障。默认为true,这将允许在超时或部分失败的情况下获得部分结果。 |