es使用postmain进行数据的增删改查
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"
}
}
]
}
}
删除文档
复杂查询-条件查询-会中文乱码
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进行数据的增删改查的更多相关文章
- Mybatis框架基于注解的方式,实对数据现增删改查
编写Mybatis代码,与spring不一样,不需要导入插件,只需导入架包即可: 在lib下 导入mybatis架包:mybatis-3.1.1.jarmysql驱动架包:mysql-connecto ...
- dbutils中实现数据的增删改查的方法,反射常用的方法,绝对路径的写法(杂记)
jsp的三个指令为:page,include,taglib... 建立一个jsp文件,建立起绝对路径,使用时,其他jsp文件导入即可 导入方法:<%@ include file="/c ...
- MVC模式:实现数据库中数据的增删改查功能
*.数据库连接池c3p0,连接mysql数据库: *.Jquery使用,删除时跳出框,确定是否要删除: *.使用EL和JSTL,简化在jsp页面中插入的java语言 1.连接数据库 (1)导入连接数据 ...
- Hibernate3回顾-5-简单介绍Hibernate session对数据的增删改查
5. Hibernate对数据的增删改查 5.1Hibernate加载数据 两种:get().load() 一. Session.get(Class arg0, Serializable arg1)方 ...
- Mybatis学习总结(二)—使用接口实现数据的增删改查
在这一篇中,让我们使用接口来实现一个用户数据的增删改查. 完成后的项目结构如下图所示: 在这里,person代表了一个用户的实体类.在该类中,描述了相关的信息,包括id.name.age.id_num ...
- 数据的增删改查(三层)<!--待补充-->
进行数据操作必然少了对数据的增删改查,用代码生成器生成的代码不是那么满意!方便在今后使用,这里就主要写“数据访问层(Dal)” 既然这里提到三层架构:有必要将三层内容在这里详细介绍一下(待补充) 注: ...
- vue实现对表格数据的增删改查
在管理员的一些后台页面里,个人中心里的数据列表里,都会有对这些数据进行增删改查的操作.比如在管理员后台的用户列表里,我们可以录入新用户的信息,也可以对既有的用户信息进行修改.在vue中,我们更应该专注 ...
- Node.js + MySQL 实现数据的增删改查
通过完成一个 todo 应用展示 Node.js + MySQL 增删改查的功能.这里后台使用 Koa 及其相应的一些中间件作为 server 提供服务. 初始化项目 $ mkdir node-cru ...
- mysql学习笔记一 —— 数据的增删改查
1.连接mysql mysql 直接回车(是以root身份,密码空,登陆的是本机localhost) [root@www mysql]# mysql -uroot -p123 -S /var/lib/ ...
随机推荐
- MySQL灵魂拷问:36题带你面试通关!
大家好,我是大彬~ 今天给大家分享MySQL常考的面试题,看看你们能答对多少. 本期MySQL面试题的目录如下: 事务的四大特性? 事务隔离级别有哪些? 索引 什么是索引? 索引的优缺点? 索引的作用 ...
- Python常用加密解密算法
MD5加密 简介 这是一种使用非常广泛的加密方式,不可逆的,常见16位和32位一般都是md5 实现 import hashlib data = '你好' print(hashlib.md5(data. ...
- C++控制台应用程序一闪而过的解决方法
Visual Studio 2017 C++控制台应用程序, 如果编译时发现黑框一闪而过,请按以下步骤操作: 右键project → 属性 → 链接器 → 系统 → 子系统,在下拉菜单中改为控制台.
- iOS路由最佳选择是什么
背景 记得四年前iOS路由开始盛行,当时比较有名的是蘑菇街的,后来CTMediator写了几篇文章把蘑菇街批的体无完肤,导致我后来写新项目用了CTMediator,那一堆组件创建的叫一个酸爽啊!再后来 ...
- python解释器和Pycharm编辑器安装使用完整详细教程
一.官网下载或软件管家公众号下载 二.安装Python解释器 1.选择自定义安装并添加到环境变量 2.检验Python是否安装成功 三.安装pycharm编辑器 1.点击安装,修改安装路径,建议安装C ...
- 如果你还不知道Apache Zookeeper?你凭什么拿大厂Offer!!
很多同学或多或少都用到了Zookeeper,并知道它能实现两个功能 配置中心,实现表分片规则的统一配置管理 注册中心,实现sharding-proxy节点的服务地址注册 那么Zookeeper到底是什 ...
- 【UE4 设计模式】建造者模式 Builder Pattern
概述 描述 建造者模式,又称生成器模式.是将一个复杂的对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示. 建造者模式将客户端与包含多个组成部分的复杂对象的创建过程分离,客户端无需知道复杂 ...
- 【数据结构与算法Python版学习笔记】树——二叉树的应用:解析树
解析树(语法树) 将树用于表示语言中句子, 可以分析句子的各种语法成分, 对句子的各种成分进行处理 语法分析树 程序设计语言的编译 词法.语法检查 从语法树生成目标代码 自然语言处理 机器翻译 语义理 ...
- Hadoop集群的配置(一)
摘要: hadoop集群配置系列文档,是笔者在实验室真机环境实验后整理而得.以便随后工作所需,做以知识整理,另则与博客园朋友分享实验成果,因为笔者在学习初期,也遇到不少问题.但是网上一些文档大多互相抄 ...
- 计算机网络之网络层移动IP
文章转自:https://blog.csdn.net/weixin_43914604/article/details/105319753 学习课程:<2019王道考研计算机网络> 学习目的 ...