面试题答案
一键面试在ElasticSearch中,可以使用_msearch
API来同时在多个索引上执行搜索操作。
API使用方式
_msearch
API允许在单个请求中发送多个搜索请求。请求体的格式较为特殊,它由多个部分组成,每个部分包含一个搜索请求的元数据(如索引、类型等)以及实际的搜索请求体。
参数含义
- 元数据部分:
index
:指定要搜索的索引名称。可以是单个索引名,也可以是用逗号分隔的多个索引名,或者使用通配符(如index_*
)来匹配多个索引。如果不指定index
,则会在所有索引上进行搜索。type
:指定要搜索的文档类型(在Elasticsearch 7.0+版本中,类型的概念逐渐被弱化,很多情况下可以不指定)。
- 搜索请求体部分:这部分就是标准的ElasticSearch搜索请求体,包含查询条件、排序、返回字段等设置,例如
query
、sort
、_source
等参数。
示例请求
POST _msearch
{ "index": "index1,index2" }
{
"query": {
"match": {
"field_name": "search_term"
}
}
}
{ "index": "index3" }
{
"query": {
"range": {
"numeric_field": {
"gte": 10,
"lte": 20
}
}
}
}
上述示例中,第一个搜索请求在index1
和index2
索引上查找field_name
字段包含search_term
的文档;第二个搜索请求在index3
索引上查找numeric_field
字段值在10到20之间的文档。