es的基本安装

安装遇到的问题

 java本地环境和es环境冲突
 ​
 https://www.cnblogs.com/q1359720840/p/14077049.html
 ​
 ​
 ,看要使用jdk11,本机安装了jdk8,修改默认jdk配置吧,好家伙es自带jdk15,就用它了,
 ​
 配置SE_JAVA_HOME(类似java_home),
 ​
  接下来返回到elasticsearch,在bin目录下找到elasticsearch-env文件,在39-40行处。将JAVA_HOME改成ES_JAVA_HOME
 ​
 我将javahome都改成ES_JAVA_HOME起来了
 ​
 if "%ES_JAVA_HOME%" == "" (
  set JAVA="%ES_HOME%\jdk\bin\java.exe"
  set ES_JAVA_HOME="%ES_HOME%\jdk"
  set JAVA_TYPE=bundled jdk
 ) else (
  set JAVA="%ES_JAVA_HOME%\bin\java.exe"
  set JAVA_TYPE=ES_JAVA_HOME
 ) 
 另一种方式:直接使用本地java环境的11
 ​
 在bin目录下找到elasticsearch-env文件,set JAVA_HOME=jdk11的路径,即可
 ​
 

es基本操作

es所支持的风格

 get:获取 
 post:修改
 put:添加
 delete:删除

创建索引

在postman向es发送put请求 http:://127.0.0.1:9200/shopping

当你索引创建成功后-再想通过put创建相同的索引会报错,put幂等

 {
    "error": {
        "root_cause": [
            {
                "type": "resource_already_exists_exception",
                "reason": "index [shoppingg/G5fil2wXS6On0_rJa1fYtw] already exists",
                "index_uuid": "G5fil2wXS6On0_rJa1fYtw",
                "index": "shoppingg"
            }
        ],
        "type": "resource_already_exists_exception",
        "reason": "index [shoppingg/G5fil2wXS6On0_rJa1fYtw] already exists",
        "index_uuid": "G5fil2wXS6On0_rJa1fYtw",
        "index": "shoppingg"
    },
    "status": 400
 }

那如果使用post呢,post不是幂等的,不允许这样操作

 {
    "error": "Incorrect HTTP method for uri [/shoppingg] and method [POST], allowed: [HEAD, DELETE, GET, PUT]",
    "status": 405
 }

获取索引

get请求:http:://127.0.0.1:9200/shopping

 {
    "shoppingg": {
        "aliases": {},
        "mappings": {},
        "settings": {
            "index": {
                "creation_date": "1618786330597",
                "number_of_shards": "1",
                "number_of_replicas": "1",
                "uuid": "G5fil2wXS6On0_rJa1fYtw",
                "version": {
                    "created": "7080099"
                },
                "provided_name": "shoppingg"
            }
        }
    }
 }

删除索引

delete : http:://127.0.0.1:9200/shopping

获取全部索引

get请求:http:127.0.0.1:9200/_cat/indinces?v

 health status index     uuid                   pri rep docs.count docs.deleted store.size pri.store.size
 yellow open   shoppingg G5fil2wXS6On0_rJa1fYtw   1   1         0           0       208b           208b
 ​

添加文档数据

post请求: http:127.0.0.1:9200/shopping/_doc

数据为body中,请求方式为json:

{

"title":"小米手机","category":"小米","images":"http://www.gulixueyuan.com/xm.jpg","price":3900.00

}

添加成功后会返回数据集:

 {
    "_index": "shopping",
    "_type": "_doc",
    "_id": "YKtY53gBLVBklMqda4mp",
    "_version": 1,
    "result": "created",
    "_shards": {
        "total": 2,
        "successful": 1,
        "failed": 0
    },
    "_seq_no": 0,
    "_primary_term": 1
 }

post请求的id新增数据是随机生成的,多次相同的请求会生效,因为id不一样

我们一般都是通过id查询数据的,那么如何使用自己的id呢?

新增文档数据-自定义id

post请求: http:127.0.0.1:9200/shopping/_doc/1001

如果id存在,那么直接将数据全部update替换

数据为body中,请求方式为json:

{

"title":"小米手机","category":"小米","images":"http://www.gulixueyuan.com/xm.jpg","price":3900.00

}

对于post请求/_doc就是新增 / _update就是修改

修改数据

post : localhost:9200/shopping/_update/1002

BODY:

 {
  "doc": {
      "title": "小米手机12",
      "category": "小米12",
      "images": "http://www.gulixueyuan.com/xm.jpg",
      "price": 3900.00
  }
 }
 {
  "_index": "shopping",
  "_type": "_doc",
  "_id": "1002",
  "_version": 4,
  "result": "updated",
  "_shards": {
      "total": 2,
      "successful": 1,
      "failed": 0
  },
  "_seq_no": 10,
  "_primary_term": 1
 }

查询数据

get 请求:http:127.0.0.1:9200/shopping/_doc/1001

 {
    "_index": "shopping",
    "_type": "_doc",
    "_id": "1001",
    "_version": 1,
    "_seq_no": 3,
    "_primary_term": 1,
    "found": true,
    "_source": {
        "title": "小米手机",
        "category": "小米",
        "images": "http://www.gulixueyuan.com/xm.jpg",
        "price": 3900.00
    }
 }

修改文档

put :http:127.0.0.1:9200/shopping/_doc/1003

 {
 "title":"小米手机222"
 }

添加文档数据-id不能重复

put :http:127.0.0.1:9200/shopping/_create/1003

id重复会出现异常

 {
    "error": {
        "root_cause": [
            {
                "type": "version_conflict_engine_exception",
                "reason": "[1003]: version conflict, document already exists (current version [1])",
                "index_uuid": "oQ0XOQPvSQmtXijIHbb-4w",
                "shard": "0",
                "index": "shopping"
            }
        ],
        "type": "version_conflict_engine_exception",
        "reason": "[1003]: version conflict, document already exists (current version [1])",
        "index_uuid": "oQ0XOQPvSQmtXijIHbb-4w",
        "shard": "0",
        "index": "shopping"
    },
    "status": 409
 }

如果不传id会报错

 {
  "error": "Incorrect HTTP method for uri [/shopping/_create] and method [PUT], allowed: [POST]",
  "status": 405
 }

查询某个索引下的所有数据

get: localhost:9200/shopping/_search

 {
    "took": 33,
    "timed_out": false,
    "_shards": {
        "total": 1,
        "successful": 1,
        "skipped": 0,
        "failed": 0
    },
    "hits": {
        "total": {
            "value": 6,
            "relation": "eq"
        },
        "max_score": 1.0,
        "hits": [
            {
                "_index": "shopping",
                "_type": "_doc",
                "_id": "YKtY53gBLVBklMqda4mp",
                "_score": 1.0,
                "_source": {
                    "title": "小米手机",
                    "category": "小米",
                    "images": "http://www.gulixueyuan.com/xm.jpg",
                    "price": 3900.00
                }
            },
            {
                "_index": "shopping",
                "_type": "_doc",
                "_id": "1001",
                "_score": 1.0,
                "_source": {
                    "title": "小米手机",
                    "category": "小米",
                    "images": "http://www.gulixueyuan.com/xm.jpg",
                    "price": 3900.00
                }
            },
            {
                "_index": "shopping",
                "_type": "_doc",
                "_id": "Yatg53gBLVBklMqdd4ku",
                "_score": 1.0,
                "_source": {
                    "title": "小米手机",
                    "category": "小米",
                    "images": "http://www.gulixueyuan.com/xm.jpg",
                    "price": 3900.00
                }
            },
            {
                "_index": "shopping",
                "_type": "_doc",
                "_id": "1002",
                "_score": 1.0,
                "_source": {
                    "title": "小米手机"
                }
            },
            {
                "_index": "shopping",
                "_type": "_doc",
                "_id": "1003",
                "_score": 1.0,
                "_source": {
                    "title": "小米手机"
                }
            },
            {
                "_index": "shopping",
                "_type": "_doc",
                "_id": "serach",
                "_score": 1.0,
                "_source": {
                    "title": "小米手机2"
                }
            }
        ]
    }
 }

删除文档

delete:http://127.0.0.1:9200/shopping/_doc/1001

复杂查询-条件查询-会中文乱码

get :localhost:9200/shopping/_search?q=title:小米

这种搜索直接在参数拼接,容易出现中文乱码

复杂查询-条件查询

get :localhost:9200/_search

 {"query":{
 ​
 "match":{"title":"小米"}
 ​
 }}

复杂查询-查询全部

复杂查询-条件查询+分页

get: localhost:9200/_search

 {"query":{
  "match_all":{}
 ​
 },
 "from":0,
  "size":2
 ​
 }

复杂查询-条件查询+分页 +显示某列内容

get : localhost:9200/_search

备注:分页然后只查询title

 请求的 body:
 {"query":{
  "match_all":{}
 ​
 },
 "from":0,
  "size":2,
 "_source":["title"]
 }

复杂查询-条件查询+对内容结果排序

get : localhost:9200/_search

备注:分页然后只查询title

 请求的 body:
 {"query":{
 "match_all":{}
 },
 "sort":{
 "price":{
    "order":"asc"
 }
 }
 ​
 }

多条件查询-查数据同时存在

localhost:9200/_search

query:代表查询

多个条件: bool

多个条件同时成立,必须的意思,里面是数组: must

或者的意思 should:

匹配的条件: match

 get : localhost:9200/_search
 ​
 body:
 ​
 {"query":{
    "bool":{
 "must":[  
    {
    "match":{
    "category":"小米"
 }}
 ,
 {
    "match":{
        "price":"3900"
    }
 }
 ]
    }
 }
 ​
 }

多条件查询-查数据或者存在

 get : localhost:9200/_search
 ​
 {"query":{
    "bool":{
        "should":[
 {"match":{
    "title":"小米"
 }},{"match":{
    "title":"华为"
 }}
        ]
    }
 }}

多条件查询-查数据范围查找

 get : localhost:9200/_search
 ​
 {"query":{
    "bool":{
        "filter":{
        "range":{"price":{
            "gt":4000
        }}
        }
    }
 }}

需要注意,即使查询一个词也会查询出相关的数据,倒排索引的关系,全文检索

完全匹配操作

localhost:9200/_search

如果match_phrase 这个查询是完全匹配,如果match ,是倒排索引匹配,match_phrase 输入的不全可以匹配到带有相关名字的,但是不进行拆分,而match 是进行拆分匹配的。

 ​
 ​
 {"query":{
 "match_phrase":{
 "title":"小米"
 }
 }
 }

高亮显示

localhost:9200/_search

 {"query":{
 "match":{
 "title":"小华"
 }
 }
 ,"highlight":{
    "fields":{
        "title":{}
    }
 }
 }

聚合查询 aggs 分组terms

 ​
 ​
 {
 "aggs":{
 "price_group":{//名称随意起
 "terms":{
 "field":"price"//分组字段
 }
 }
 }
 }

结果:是带着原始数据的,如果不要原始数据,可以增加 size:0

 {
 "aggs":{
 "price_group":{
 "terms":{
 "field":"price"
 }
 }
 },"size":0
 }

求平均值 avg

 {"aggs":{
 "price_avg":{
 "avg":{
 "field":"price"
 }
 }
 },"size":0
 ​
 }
 ​

查看es映射关系

1.创建索引

put http://localhost:9200/user

2.创建结构信息

put http://127.0.0.1:9200/user/_mapping

TYPE:text是可以分词,keyword是完整匹配, INDEX:true,可以被索引,false不能被索引

 {"properties":{
 "name":{
 "type":"text",
 "index":true
 }
 ,
 "sex":{
 "type":"keyword",
 "index":true
 }
 ,"tel":{
 "type":"keyword",
 "index":false
 }
 ​
 }}

get http://127.0.0.1:9200/user/_mapping

看看上面传的结果

添加数据:

post localhost:9200/user/_doc

 {
 "sex":"男的","name":"小米"
 ,"tel":1111 }

查询数据:

get http://127.0.0.1:9200/user/_search

有结果

 {"query":{
    "match":{
        "name":"小"
    }
 }}

没结果

 {"query":{
    "match":{
        "sex":"男"
    }
 }}

有结果

 {"query":{
    "match":{
        "sex":"男的"
    }
 }}

报错

 {"query":{
    "match":{
        "tel":1111
    }
 }}

es使用postmain进行数据的增删改查的更多相关文章

  1. Mybatis框架基于注解的方式,实对数据现增删改查

    编写Mybatis代码,与spring不一样,不需要导入插件,只需导入架包即可: 在lib下 导入mybatis架包:mybatis-3.1.1.jarmysql驱动架包:mysql-connecto ...

  2. dbutils中实现数据的增删改查的方法,反射常用的方法,绝对路径的写法(杂记)

    jsp的三个指令为:page,include,taglib... 建立一个jsp文件,建立起绝对路径,使用时,其他jsp文件导入即可 导入方法:<%@ include file="/c ...

  3. MVC模式:实现数据库中数据的增删改查功能

    *.数据库连接池c3p0,连接mysql数据库: *.Jquery使用,删除时跳出框,确定是否要删除: *.使用EL和JSTL,简化在jsp页面中插入的java语言 1.连接数据库 (1)导入连接数据 ...

  4. Hibernate3回顾-5-简单介绍Hibernate session对数据的增删改查

    5. Hibernate对数据的增删改查 5.1Hibernate加载数据 两种:get().load() 一. Session.get(Class arg0, Serializable arg1)方 ...

  5. Mybatis学习总结(二)—使用接口实现数据的增删改查

    在这一篇中,让我们使用接口来实现一个用户数据的增删改查. 完成后的项目结构如下图所示: 在这里,person代表了一个用户的实体类.在该类中,描述了相关的信息,包括id.name.age.id_num ...

  6. 数据的增删改查(三层)<!--待补充-->

    进行数据操作必然少了对数据的增删改查,用代码生成器生成的代码不是那么满意!方便在今后使用,这里就主要写“数据访问层(Dal)” 既然这里提到三层架构:有必要将三层内容在这里详细介绍一下(待补充) 注: ...

  7. vue实现对表格数据的增删改查

    在管理员的一些后台页面里,个人中心里的数据列表里,都会有对这些数据进行增删改查的操作.比如在管理员后台的用户列表里,我们可以录入新用户的信息,也可以对既有的用户信息进行修改.在vue中,我们更应该专注 ...

  8. Node.js + MySQL 实现数据的增删改查

    通过完成一个 todo 应用展示 Node.js + MySQL 增删改查的功能.这里后台使用 Koa 及其相应的一些中间件作为 server 提供服务. 初始化项目 $ mkdir node-cru ...

  9. mysql学习笔记一 —— 数据的增删改查

    1.连接mysql mysql 直接回车(是以root身份,密码空,登陆的是本机localhost) [root@www mysql]# mysql -uroot -p123 -S /var/lib/ ...

随机推荐

  1. SpringBoot入门05-全局配置文件

    springboot全局配置文件作用是设置或修改默认设置 springboot全局配置文件有下面两种方式 application.xml配置文件 示例 server.port=8088 server. ...

  2. PTA实验7-2-3 求矩阵的局部极大值 (15分)

    实验7-2-3 求矩阵的局部极大值 (15分) 给定M行N列的整数矩阵A,如果A的非边界元素A[i][j]大于相邻的上下左右4个元素,那么就称元素A[i][j]是矩阵的局部极大值.本题要求给定矩阵的全 ...

  3. 如何正确使用JMeter性能测试?紧扣面试实际要求

    前段时间专门挑了一段时间在准备面试.经过两次面试后,有一些比较深刻的认识.对于企业要求来说,除了对专业理论知识考究之外,对测试工具这块也是看重的. 一.使用JMeter测试快速入门 1.线程组是什么 ...

  4. [JVM-6]类加载器

    定义 前面说过加载阶段是一个可以让设计人员高度自控的模块,因为类文件的源头可以是多种多样的,代码生成.反射生成或从网络中生成等.因此类加载器作为对这些文件的处理就显得尤为重要. 但类加载器的功能不仅如 ...

  5. SharkCTF2021 The_nature_of_the_human

    (信安数基的quiz1写不出来 来这放题解泄愤) crypto类题. 题面 其加密的大致过程是,对明文flag中的逐个字符,随机使用三种加密方式: 第一种,对该字符进行sha256加密后以16进制形式 ...

  6. UltraSoft - Beta - Scrum Meeting 2

    Date: May 18th, 2020. Scrum 情况汇报 进度情况 组员 负责 今日进度 q2l PM.后端 建立Beta仓库管理增加服务器部署和Git协作文档 Liuzh 前端 查阅响应式布 ...

  7. the Agiles Scrum Meeting 9

    会议时间:2020.4.17 20:00 1.每个人的工作 今天已完成的工作 个人结对项目增量开发组:基本实现个人项目创建.仓库自动分配,修复bug issues: 增量组:准备评测机制,增加仓库自动 ...

  8. linux与windows下文件编码问题

    注:转换操作均在Linux终端进行操作 DOS与Unix格式转换 安装工具:dos2unix.unix2dos # ubuntu apt-get install dos2unix apt-get in ...

  9. 单片机stm32 USART串口实际应用解析

    stm32作为现在嵌入式物联网单片机行业中经常要用多的技术,相信大家都有所接触,今天这篇就给大家详细的分析下有关于stm32的出口,还不是很清楚的朋友要注意看看了哦,在最后还会为大家分享有些关于stm ...

  10. MyBatis源码分析(二):MyBatis整体架构及原理

    一.Mybatis整体架构导图 二.Mybatis的核心组成 SqlSessionFactoryBuilder(构造器): 根据配置信息(XML)生成SqlSessionFactory工厂接口,构造器 ...