0


ES相关命令

分享一下自己整理的ES相关命令

一:简介

    ES(Elasticsearch)基于Lucene,可以理解为是一个全文搜索引擎。Elasticsearch是用Java开发的,Apache开放源码。ES的实时搜索,稳定,可靠,快速,扩展性很好等特性,使其能扩展到大量服务器以处理PB级别的数据。因此在全文搜索领域应用极广。ES主要功能:搜索引擎和数据分析引擎,全文检索和结构化检索,近乎实时的处理海量数据

二:基本结构(跟数据库比对)

    ES集群可以包含多个索引(indices)(数据库)

    每一个索引可以包含多个类型(types)(表)

    每一个类型包含多个文档(documents)(行)

    然后每个文档包含多个字段(Fields)(列)

三:常用数据类型

    (1)字符串类型: text, keyword

    (2)数字类型:long, integer, short, byte, double, float, half_float, scaled_float

    (3)日期:date、date_nanos

    (4)布尔型:boolean

四:列出索引命令

    GET _cat/indices?v

五:创建索引

PUT /lxtest4
{
    "mappings": {
        "stu": {
            "properties": {
                "name": {"type": "text"},
                "age": {"type": "long"},
                "birth": {"type": "date"},
                "mess": {"type": "keyword"}
            }
        }
    }
}

六:索引中插入数据

PUT /lxtest4/stu/1  
{
    "name" : "张三",
    "age" : "18",
}

POST /lxtest4/stu
{
  "name":"lisi",
  "age":20
}

七:批量插入数据

POST /lxtest3/stu/_bulk
{"index":{}}
{"name":"zhangba","age":"15"}
{"index":{}}
{"name":"wangwu","age":"12"}
{"index":{}}
{"name":"zhaoliu","age":"13"}
{"index":{}}
{"name":"chenqi","age":"14"}

八:查询数据

    GET /lxtest4/stu/_search

九:条件查询

    1、指定id查询

            GET lxtest4/stu/5

    2、模糊匹配
GET /lxtest4/stu/_search
{
  "query": {
    "match_phrase": {
      "name":"张三"
    }
  }
}
    3、分词匹配
GET /lxtest4/stu/_search
{
  "query": {
    "match": {
      "name":"张三"
    }
  }
}
    4、指定多个字段查询
GET /lxtest4/stu/_search
{
  "query": {
    "multi_match": {
      "query": "小",
      "fields": ["name","mess"]
    }
  }
}
    5、精准查询
GET lxtest4/_search
{
  "query": {
    "term": {
      "name.keyword": {
    value:"李七"
    }
    }
  }
}
    6、查询多个值
GET /lxtest1/_search
{
  "query": {
    "ids": {
      "type": "sales",
      "values":["1","2"]
    }
  }
}

GET full_asset_v3/doc/_search
{
  "query": {
    "bool": {
      "must": [
        {
          "terms": {
            "sub_category": [1,2,4,5,7,9,10,11,12]
          }
        }
      ]
    }
  }
}
    7、查看字段类型

            GET /lxtest/stu/_mapping

    8、组合查询(且)
GET /lxtest/stu/_search
{
  "query": {
    "bool": {
      "must": [
        {
          "match_phrase": {
            "name": "测试"
          }
        },
        {
          "match_phrase": {
            "mess": "123"
          }
        }
      ]
    }
  }
}
    9、组合查询(或)
GET /lxtest/stu/_search
{
  "query": {
    "bool": {
      "should": [
        {
          "match_phrase": {
            "name": "测试"
          }
        },
        {
          "match_phrase": {
            "mess": "123"
          }
        }
      ]
    }
  }
}
    10、嵌套查询
GET auction_extract_v3/_search
{
  "query": {
    "nested": {
      "path": "obligors",
      "query": {
        "match_phrase": {
          "obligors.name.keyword": "中国工商银行股份有限公司"
        }
      }
    }
  }
}

十、分页查询

            size    显示应该返回的结果数量,默认是 10

            from   显示应该跳过的初始结果数量,默认是 0

            如果每页展示 5 条结果,可以用下面方式请求得到 1 到 3 页的结果

            GET /_search?size=5

            GET /_search?size=5&from=5

            GET /_search?size=5&from=10

十一、查询结果排序

GET /lxtest4/_search
{
  "sort": [
    {
      "age.keyword": {
        "order": "desc"
      }
    }
  ]
}

十二、聚合查询

            指标聚合(metric):max min avg sum:

            size:0       表示聚合查询的结果不需要返回中间的文档内容
             max_price 我们自定义的分组名字,最好是见名知意的
GET /lxtest1/sales/_search
{
  "size": 0, 
  "aggs": {
    "max_price": {
      "max": {
        "field": "price"
      }
    }
  }
}

十三、 分组(桶聚合(bucketing)

GET /tvs/sales/_search
{
  "size": 0,
  "aggs": {
    "group_color": {
      "terms": {
        "field": "color"
      }
    }
  }
}

十四、查询有多少分组

{
  "size": 0,
  "aggs": {
    "perDeviceAggregation": {
      "terms": {
        "field": "orgId.keyword"
      }
    },
    "count":{
      "cardinality": {
        "field": "orgId.keyword"
      }
    }
  }
}

十五、统计数据数量

GET /lxtest1/sales/_count
{
  "query": {
    "match": {
      "price": "2000"
    }
  }
}

十六、更新数据

    1、全局更新  插入数据时有即更新,没有则新增
PUT lxtest4/stu/5
{
  "name":"lixiaoqi",
  "age":"22",
  "birth":"1998-17-03 12:16:01",
  "mess":"大学生"
}
    2、局部更新  指定id更新(不加id时新增)
POST lxtest4/stu/5/_update
{
  "doc":{
    "age":"20",
    "desc":"新加的字段测试"
  }
}

十七、删除

    DELETE lxtest/stu/100

    POST /lxtest3/_delete_by_query {"query": {}}

    DELETE lxtest

十八、根据文档字段长度查询

GET full_asset_v3/doc/_search
{
  "query": {
    "bool": {
      "filter": {
        "regexp": {
          "obligors.number": {
            "value": ".{18,}"
          }
        }
      }
    }
  }

十九、es中使用简单sql(语句中的表、字段 对应 es中的索引、文档)

POST _xpack/sql?format=txt&pretty
{
  "query": "select count(distinct(vehicleNumber.keyword)) from yca_vehicle_illegal_information where name = '北京鸿通世纪货物运输有限公司'"
}

二十、查询某个字段存在的数据

GET full_asset_v3/doc/_search
{
  "query": {
    "bool": {
      "must": [
        {
          "exists": {
            "field": "obligors.birthday"
          }
        }
      ]
    } 
  }
}

二十一、对多字段进行分组

GET court_notice_asset/doc/_search
{
  "size": 0, 
  "aggs": {
    "fenzu": {
      "terms": {
        "script": "doc['court.keyword'].values +'#split#'+ doc['gmtTrial'].values+'#split#'+ doc['caseNumber.keyword'].values",
        "size": 100
      }
    }
  }
}

二十二、查询某个字段的多只值(相当于sql中的in)

GET full_asset_v3/doc/_search
{
   "query": {
      "bool": {
        "filter": {
          "terms": {
            "sub_category": [1,2,4,5,7,9,10,11,12]
        }
      }
    }
  }
}

本文转载自: https://blog.csdn.net/m0_37914171/article/details/128498861
版权归原作者 幸运的箱子 所有, 如有侵权,请联系我们删除。

“ES相关命令”的评论:

还没有评论