ElasticSearch 基本操作

Es 安装

安装docker

  • Mac OS 安装 [注:系统需先安装 brew 工具]

    brew install --cask docker
    
  • 查看docker是否完成安装

    docker -v
    

安装-启动Es

  • 拉取 Es 镜像

    docker pull elasticsearch:7.17.1
    
  • 启动 Es – 单节点启动

    • 编写 docker-compose.yml 文档

      version: '3.7'
      services:
      
        elasticsearch:
          image: elasticsearch:7.17.1
          container_name: elasticsearch
          environment:
            - xpack.security.enabled=false
            - discovery.type=single-node # 单节点
            - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
          ulimits:
            memlock:
              soft: -1
              hard: -1
            nofile:
              soft: 65536
              hard: 65536
          cap_add:
            - IPC_LOCK
          volumes:
            - ./data:/usr/share/elasticsearch/data
            - ./plugins:/usr/share/elasticsearch/plugins
          ports:
            - 9200:9200
            - 9300:9300 
      
    • 启动Es

      docker-compose up -d
      
    • 查看Es 运行状态

      docker ps 
      

Es 基础用法

索引操作

新增索引-默认索引配置

  • put
  • {{host}}/20220325001

新增索引-有类型、映射的索引

  • put
  • {{host}}/20220325002
{
   "settings":{
       "number_of_shards":5,
       "number_of_replicas":3
   },
   "mappings":{
   
           "properties":{
               "name":{
                   "type":"keyword"
               }
           
       }
   }
}

获取索引的map

  • get

  • {{host}}/20220325002/_mapping

查询索引

  • get
  • {{host}}/index_name

删除索引

  • delete
  • {{host}}/index_name

获取所有的索引

{{host}}/_cat/indices?v

添加数据

添加数据

  • post

  • {{host}}/20220325/_doc/

{
   "shoppingName":"fudaopin",
   "price":45.9,
   "desc":"测试"
}

自定义数据id

  • post || put

  • {{host}}/20220325/_doc/20220324001

{
  "shoppingName":"fudaopin",
  "price":45.9,
  "desc":"测试"
}

删除数据

删除数据

  • delete
  • {{host}}/20220325/_doc/20220325001

数据更新

更新数据 put 全量更新

  • put

  • {{host}}/20220325/_doc/202203001

{
   "shoppingName":"fudaopin",
   "price":45.9,
   "desc":"运维"
}

更新数据 post非全量更新

  • post
  • {{host}}/20220325/_update/202203001
{
  "doc":{
           "desc":"运维"
        } 
}

查询数据

查询索引下的所有数据

  • get
  • {{host}}/20220325/_search

根据id查询数据

  • get

  • {{host}}/20220325/_doc/20220325001

根据自定义条件查询数据(关键字拼接模式)

  • get
  • {{host}}/20220325/_search?q=desc:运维

根据自定义条件查询数据(json请求体模式)

  • get
  • {{host}}/20220325/_search
{
  "query":{
      "match":{
          "desc":"运维"
      }
  }
}

全量查询

  • get
  • {{host}}/20220325/_search
{
  "query":{
      "match_all":{

      }
  }
}

分页查询

  • get
  • {{host}}/20220325/_search
{
  "query":{
      "match_all":{

  }
  },
  "from":1,// 当前页
  "size":2 //每页数量
}

查询特定字段

  • get
  • {{host}}/20220325/_search
{
  "query":{
      "match_all":{

  }
  },
  "from":1,// 当前页
  "size":2, //每页数量
  "_source":["shoppingName"] 
}

对查询结果进行排序

  • get
  • {{host}}/20220325/_search
{
  "from":0,
  "size":4,
  "sort":{
      "price":{
          "order":"desc"
      }
  },
  "query":{
      "match_all":{}
  }
}

多条件查询-and

  • get
  • {{host}}/20220325/_search
{
  "query":{
      "bool":{
           "must":[ {
               "match":{
                   "shoppingName":"fudaopin"
               }
           },{
               "match":{
                   "desc":"运维"
               }
           }]//多条件必须同事成立
      }
  }
}

多条件查询-or

  • get
  • {{host}}/20220325/_search
{
  "query":{
      "bool":{
           "should":[ {
               "match":{
                   "shoppingName":"fudaopin"
               }
           },
           {
               "match":{
                   "desc":"运维"
               }
           }
          ]
      }
  }
}

范围查询

  • get
  • {{host}}/20220325/_search
{
  "from":0,
  "size":1,
  "query":{
      "bool":{
          "should":[],
          "filter":{
              "range":{
                  "price":{
                      "gt":30  // 大于 30
                  }
              }
          }
      }
  }

}

全量匹配

  • get
  • {{host}}/20220325/_search
{
  "query":{
      "match_phrase":{
          "desc":"运维"
      }
  }
}

高亮显示

  • get

  • {{host}}/20220325/_search

{
  "query":{
      "match_phrase":{
          "shoppingName":"fudaopin"
      }
  },
  "highlight":{
      "fields":{
          "shoppingName":{}
      }
  }
}

聚合查询

  • get
  • {{host}}/20220325/_search
{
   "aggs":{
       "price_group":{//名称--随意
           "terms":{// 分组关键字
               "field":"price"//分组的字段
           }
       }
   }
}

去掉多余数据–只取聚合结果

  • get
  • {{host}}/20220325/_search
{
   "aggs":{
       "price_group":{//名称--随意
           "terms":{// 分组关键字
               "field":"price"//分组的字段
           }
       }
   },
 "size":0
}

求平均值

  • get
  • {{host}/20220325/_search
{
   "aggs":{
       "price_avg":{//名称--随意
           "avg":{// 分组关键字
               "field":"price"//分组的字段
           }
       }
   },
 "size":0
}

##最近正在做一个搜索的项目,后续会继续更新Es相关技术

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值