Elasticsearch学习笔记之—search
查询全部
1、/_search 所有索引,所有type下的所有数据都搜索出来
2、/index1,index2/_search 查询多个索引下的数据,示例
GET /test,.newkibana_1/_search { "query": { "match_all": {} } }
3、轻量api之1查询msg字段包含apple的记录 GET /test,.newkibana_1/_search?q=msg:apple
4、轻量api之2查询msg字段不包含apple的记录 GET /test,.newkibana_1/_search?q=-msg:apple
5、轻量api之3可以多个条件如:GET /test,.newkibana_1/_search?q=-msg:apple -name:tree 多个条件之间用空格
6、轻量api之从全部字段里进行搜索 GET /test,.newkibana_1/_search?q=-apple
7、只取某个字段的值
GET /test,.newkibana_1/_search { "query":{ "match_all":{} }, "_source":["space.name","type"] }
8、排序
GET /music/children/_search { "query":{ "match": { "name": "gymbo" } }, "sort":[{"length":"desc"}] }
9、分页
GET /music/children/_search { "query": { "match_all":{} }, "from": 10, "size": 10 }
10、数字范围过滤
GET /music/children/_search { "query":{ "bool":{ "must": [ {"match": { "name": "gymbo" }} ], "filter": {"range": { "length": { "gte": 65, "lte": 80 } }} } } }
11、全文检索 不分大小写 去倒排索引中匹配
GET /music/children/_search { "query":{ "match": { "content":"friend smile" } } }
12、短语检索 不分词,必须字段内容完全匹配
GET /music/children/_search { "query":{ "match_phrase": { "content":"friend smile" } } }
13、命中
GET /test,.newkibana_1/_search { "query":{ "multi_match":{ "query":"default", "fields":["space.name"] } }, "highlight": { "fields": { "space.name":{} } } }
14、分组求合
GET /music/children/_search { "size": 0, "aggs": { "group_by_lang": { "terms": { "field": "language" } } } }
如果聚合查询时出现如下错误提示:
"root_cause": [ { "type": "illegal_argument_exception", "reason": "Fielddata is disabled on text fields by default. Set fielddata=true on [language] in order to load fielddata in memory by uninverting the inverted index. Note that this can however use significant memory. Alternatively use a keyword field instead." } ]
需要将用于分组的字段的fielddata属性设置为true
PUT /music/_mapping/children { "properties": { "language": { "type": "text", "fielddata": true } } }
15、带查询条件的分组求合
GET /music/children/_search { "size": 0, "query": { "match": { "content": "friend" } }, "aggs": { "all_languages": { "terms": { "field": "language" } } } }
16、求平均值
GET /music/children/_search { "size": 0, "aggs": { "group_by_languages": { "terms": { "field": "language" }, "aggs": { "avg_length": { "avg": { "field": "length" } } } } } }
17、分组后排序
GET /music/children/_search { "size": 0, "aggs": { "group_by_languages": { "terms": { "field": "language", "order": { "avg_length": "desc" } }, "aggs": { "avg_length": { "avg": { "field": "length" } } } } } }
18、嵌套查询,区间分组+分组统计+平均值 需求:按照指定的时长范围区间进行分组,然后在每组内再按照语种进行分组,最后再计算时长的平均值
GET /music/children/_search { "size": 0, "aggs": { "group_by_price": { "range": { "field": "length", "ranges": [ { "from": 0, "to": 60 }, { "from": 60, "to": 120 }, { "from": 120, "to": 180 } ] }, "aggs": { "group_by_languages": { "terms": { "field": "language" }, "aggs": { "average_length": { "avg": { "field": "length" } } } } } } } }
分类:
ElasticSearch
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?