四、Elasticsearch基本语法
索引基本操作
创建索引: PUT /索引名 注意:索引名必须全部由小写字母组成
PUT /order
查看所有索引:
GET /_cat/indices?v
查看单个索引: GET /索引名
GET /order
删除索引: DELETE /索引名
DELETE /order
删除所有索引: DELETE /*
DELETE /*
创建索引(index),同时创建类型(type)和映射(mapping),7.0以前是可以指定type的
PUT /order
{
"mappings":{
"order_detail":{
"properties":{
"id":{"type":"keyword"},
"orderid":{"type":"keyword"},
"quantity":{"type":"integer"},
"createdtime":{"type":"date"}
}
}
}
}
7.0以后不能指定type,详细看官网介绍:
6.0之前一个索引可以对应多个类型,所以这里才会是先写mapping,再写type(order_detail1,order_detail2就是type)
PUT /order
{
"mappings":{
"order_detail1":{
"properties":{
"id":{"type":"keyword"},
"orderid":{"type":"keyword"},
"quantity":{"type":"integer"},
"createdtime":{"type":"date"}
}
},
"order_detail2":{
"properties":{
"id":{"type":"keyword"},
"orderid":{"type":"keyword"},
"quantity":{"type":"integer"},
"createdtime":{"type":"date"}
}
}
}
}
创建索引同时设置settings与mappings
PUT /order
{
"settings": {
"index": {
"number_of_shards": "3",
"number_of_replicas": "1",
"max_result_window": "10000000"
},
"analysis": {
"analyzer": {
"sanalyzer": {
"tokenizer": "standard"
}
},
"normalizer": {
"lowercase": {
"type": "custom",
"filter": [
"lowercase"
]
}
}
}
},
"mappings": {
"properties": {
"PlatformId": {
"type": "short"
},
"Platform": {
"type": "keyword",
"normalizer": "lowercase"
}
"OrderRemark": {
"type": "keyword",
"normalizer": "lowercase"
},
"PackageInfos": {
"properties": {
"PackageId": {
"type": "keyword",
"normalizer": "lowercase"
},
"ShippingTime": {
"type": "keyword",
"normalizer": "lowercase"
}
}
}
}
}
}
因为ES有默认返回数,可以自定义max_result_window
Docment基本操作
查询所有数据,track_total_hits返回所有条数
GET /order/_search
{
"track_total_hits": true,
"query": { "match_all": {} }
}
按单号搜索
GET /order/_search
{
"query": {
"match": {
"orderid": "orderid1"
}
}
}
按多个单号搜索
GET /order/_search
{
"query": {
"terms": {
"orderid": ["orderid1","orderid2"]
}
}
}
复杂查询,比如:查询订单状态为已下单,并且发货单是未上传状态的(这里会有两种情况:1.发货单还没生成,2.发货单已生成但是还没上传)
{
"track_total_hits": true,
"from": 0,
"query": {
"bool": {
"must": [
{
"terms": {
"COStateId": [
"Ordered"
]
}
},
{
"bool": {
"should": [
{
"bool": {
"must_not": [
{
"exists": {
"field": "PackageInfos"
}
}
]
}
},
{
"terms": {
"PackageInfos.WMSStateId": [
"0"
]
}
}
]
}
}
]
}
},
"size": 20,
"sort": [
{
"InputTime": {
"order": "desc"
}
}
]
}
根据某个条件(COID)查询重复数据
GET order/_search
{
"size": 0,
"aggs": {
"duplicateCount": {
"terms": {
"field": "COID",
"min_doc_count": 2
},
"aggs": {
"duplicateDocuments": {
"top_hits": {}
}
}
}
}
}
分类:
Elasticsearch
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)