es简单实用

一、ES三个基本元素

_index:顶层单位就叫做 Index,每个Index的名字必须是小写。

_type:虚拟的逻辑分组,一个 Index 里面可以有两个逻辑相似的 Type。7.x后移除type概念,用_doc。

_id:文档的唯一标识。

二、其他核心概念

mapping:相当于schema,定义字段类型,只能加新字段,不能修改原字段类型。

doc:一个doc相当于一条记录。

field:数据类型,text(全文索引,分词,不能用于日期范围查询),keyword(不分词,只能完整搜索)

倒排索引:目录和索引页,可以比喻为正排索引和倒排索引  

  • 文档ID,用于获取原始信息
  • 单词频率TF,记录该单词在该文档中的出现次数,用于后续相关性算分
  • 位置Position,记录单词在文档中分词的位置,用于语句搜索(phrase query)
  • 偏移Offset,记录单词在文档的开始和结束位置,实现高亮显示

三、ES增删改查

1、新建索引

PUT  index_name

2、添加字段

PUT  index_name/_mapping/elasticsearch   _type
{
  "properties": {
          "articleNumber" : {
            "type" : "keyword"
          }
}
}

3、给字段添加keyword类型

PUT index_name/_mapping/elasticsearch  
{
  "properties": {
    "bindTime": { 
      "type":"text",
      "fields":{
        "keyword":{
          "type":"keyword",
          "ignore_above":256
        }
      }
    }
  }
}

4、删除索引

DELETE index_name

5、查询表结构

GET  index_name/_mapping

6、插入数据

PUT index_name/elasticsearch/249480
{
          "bindMobile": "18*****141",
          "bindStatus": "1"
}

7、删除部分数据

DELETE /index/type/5
POST /risk_order_his/_delete_by_query
{

  "query" : {
  "bool" : {
    "must" : [
      {
        "range" : {
          "orderId" : {
            "to" : 10000000000,
            "from":0,
            "include_lower" : true,
            "include_upper" : true,
            "boost" : 1.0
          }
          
        }
      },
      {
        "range" : {
          "orderAddtime" : {
            "from" : "2019-12-01 00:00:00",
            "to" : "2020-01-01 00:00:00",
            "include_lower" : true,
            "include_upper" : true,
            "boost" : 1.0
          }
          
        }
      }
    ],
    "boost" : 1.0
  }
  }
}

8、修改数据

POST /conference/event/4/_update
{
  "doc": {"host": "Bob"}
}

9、查询数据

GET /索引库名/_search
{
    "query":{
        "查询类型":{
            "查询条件":"查询条件值"
        }
    }
}

#这里的query代表一个查询对象,里面可以有不同的查询属性

# 查询类型:
# 例如:match_all, match,term , range 等等
# 查询条件:查询条件会根据类型的不同,写法也有差异,后面根据示例进行详细讲解
# match 全文搜索,会先对query进行分词,然后匹配

# 1. 查询所有数据
GET /movies/_search
{
    "query":{
        "match_all":{
        }
    }
}

# 2. 匹配查询(match)
# 查看title 字段有"快乐"的
GET /movies/_search
{
    "query":{
        "match": {
          "title": "快乐"
        }
    }
}

# 查看所有字段有"快乐"
body = {
    "query": {
        "multi_match": {
            "query": keyword,
        }
    }
}

# 查看title字段有"快"or"乐"的
GET /movies/_search
{
  "query": {
    "match": {
      "title": {
        "query": "快乐",
        "analyzer": "standard"
      }
    }
  }
}

#5. 范围
GET movies/_doc/_search
{  
  "query": {
  "range": {
    "star": {
      "gte": 9.5,
      "lte": 10
    }
  }
  }
}

# 6. 复杂查询
# bool有3类查询关系,must(都满足),should(其中一个满足),must_not(都不满足)
GET movies/_doc/_search
{
  "query": {
    "bool": {
      "must": [
        {
          "match": {
            "type": "喜剧"
          }
        },
        {
          "range": {
            "star": {
              "gte": 9.5,
              "lte": 10
            }
          }
        }
      ]
    }
  }
}

10、查询带keyword子类型的字段


GET index_name/_search
{
  "query":{
    "range": {
      "bindTime.keyword": {
          "gte": "2010-02-07 10:30:46",
          "lte": "2020-02-07 19:30:46"
      }
    }
  }
}

四、es优化

es节点和分片

es查询优化

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值