赞
踩
Elasticsearch 的搜索 API 是其最强大的功能之一,允许您根据各种条件高效地查找和筛选索引中的文档。以下是搜索 API 的实战指南:
请求方式:GET
URL:GET /<index>/_search
请求体(JSON 格式):包含搜索查询定义和其他搜索参数。
示例:
GET /my_index/_search
{
"query": {
"match_all": {}
}
}
此示例执行了一个简单的全量搜索,返回 my_index
中的所有文档。
搜索请求的核心是 query
部分,它支持多种查询类型。以下是一些常用的查询类型:
目的:对全文字段执行模糊匹配。
示例:
{
"query": {
"match": {
"title": "example search"
}
}
}
目的:对非全文字段执行精确值匹配。
示例:
{
"query": {
"term": {
"category.keyword": "electronics"
}
}
}
目的:查找在指定数值或日期范围内匹配的文档。
示例:
{
"query": {
"range": {
"price": {
"gte": 50,
"lte": 200
}
}
}
}
目的:执行近似匹配或模式匹配。
{
"query": {
"fuzzy": {
"title": {
"value": "exmpl",
"fuzziness": "AUTO"
}
}
}
}
{
"query": {
"wildcard": {
"product_code": {
"value": "PRD*"
}
}
}
}
目的:组合多个查询,如 bool
查询(AND、OR、NOT逻辑)、constant_score
查询、dis_max
查询等。
示例(Bool Query):
{ "query": { "bool": { "must": [ { "match": { "title": "example" } }, { "range": { "price": { "gte": 100 } } } ], "should": [ { "match": { "description": "exclusive" } }, { "match": { "tags": "limited edition" } } ], "minimum_should_match": 1, "filter": [ { "term": { "in_stock": true } } ] } } }
通过 sort
参数指定搜索结果的排序字段和方向。
示例:
{
"query": ...,
"sort": [
{ "price": { "order": "asc" } },
{ "popularity": { "order": "desc" } }
]
}
使用 from
和 size
参数进行分页。
示例:
{
"query": ...,
"from": 10,
"size": 20
}
为搜索结果中匹配的文本片段添加高亮标记。
示例:
{
"query": ...,
"highlight": {
"fields": {
"title": {},
"description": {}
}
}
}
对搜索结果进行统计分析和数据分组。
示例(Terms Aggregation):
{
"query": ...,
"aggs": {
"categories": {
"terms": {
"field": "category.keyword"
}
}
}
}
计算动态值并在搜索结果中返回。
示例:
{
"query": ...,
"script_fields": {
"discounted_price": {
"script": {
"source": "doc['price'].value * params.discount",
"params": {
"discount": 0.9
}
}
}
}
}
刷新 (Refresh):通过在URL中添加 ?refresh=true
参数,确保搜索结果包含最近的索引更改。
一致性控制:使用 search_type
参数(如 query_then_fetch
、dfs_query_then_fetch
)控制搜索的一致性级别。
预定义查询模板,使用变量和条件逻辑简化复杂查询的构建。
跨索引搜索:在URL中指定多个索引,如 GET /index1,index2/_search
。
别名:使用别名代替索引名进行搜索,便于管理索引集合和路由。
实战中,根据实际需求灵活组合以上搜索特性,构建复杂而精准的查询语句,以高效地从Elasticsearch中检索所需数据。同时,关注性能指标,如查询速度、内存使用和磁盘I/O,适时调整查询复杂性和索引设置以优化搜索性能。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。