四、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": {}
        }
      }
    }
  }
}
posted @ 2023-03-30 18:09  o李一波o  阅读(44)  评论(0编辑  收藏  举报