slirp4netns >= 0.4 fuse-overlayfs >= 0.7

这是在本地安装elasticsearch数据然后通过kibana来操作数据的dsl来实现的
其中的查询api文档主要就是来自于:
https://elasticsearchjava-api.readthedocs.io/en/latest/index.html
后面的api因为应用到的比较少,所以就没怎么编写对应的接口了

#其实这是一个新增数据的语法也是一个修改的语法
#在这里改为put其实是更好一些,因为put指定了具体的数据
POST test1/_doc/1
{"uid": "1234","phone": "123456","message": "1","msgcode": "1","sendtime": "2019-03-14 01:14:20"
}#记住这里是从数据库中指定的类型中获取到id为1的数据
GET test1/_doc/1
#这是获取整个数据库中的所有数据
GET test1#自己定义一个索引库,其中的mappings是一个数据结构
#自己定义就不会采用默认的数据结构了,这样的效率会比较快点
#其中的settings主要的作用就是用来修改分片与副本数的
PUT jason
{"settings": {"number_of_shards": 10,"number_of_replicas": 1,"refresh_interval": "1s"},"mappings": {"properties":{"uid":{"type": "long"},"phone":{"type": "long"},"message":{"type": "keyword"},"msgcode":{"type": "long"},"sendtime":{"type":"date","format":"yyyy-MM-dd HH:mm:ss"}}}
}GET jason/#修改es中的数据
#通过主键id的方式进行修改数据
POST jason/_doc/78
{"uid": "175","phone": "176590660","message": "章美","msgcode": "1","sendtime": "2020-12-14 01:14:20"
}#根据id来查询索引库
GET jason/_doc/1#相当于mysql中的where语句来修改数据的语法
#将电话号码为176259062360中的message数据修改为ruantongqinaduan这样一种数据
POST jason/_update_by_query
{"query":{"term":{"phone":"1762562360"}},"script":{"source": "ctx._source['message'] = 'ruantongqinaduan'"}
}#这是查询数据库中的数据与结构
GET jason/#根据数据中的id来删除数据
DELETE test1/_doc/1#删除phone为123456中的数据
POST test1/_doc/delete_by_query
{"query":{"term":{"phone": "123456"}}
}#删除一个字段的所有数据,由于我的数据量太少,所以这个语法我没有真正的试验过
POST test1/_doc/_update_by_query
{"script":{"lang":"painless","inline":"ctx._source.remove(\"msgcode\")"}
}#查询语句,查询出所有的数据查询集群所有索引库的信息,包含一些隐藏索引库的信息
#完全匹配数据
GET _search
{"query":{"match_all": {}}
}#查询索引库中所有的数据
GET jason/_doc/_search#查询具体的id的数据
GET jason/_doc/1#等值(term)查询,这是精确的条件
GET jason/_doc/_search
{"query":{"term":{"phone":"176259060"}}
}#如果你想在一个字段匹配多个值的话,可以使用terms,相当于sql的in语法
GET jason/_doc/_search
{"query":{"terms":{"uid":[176,12]}}
}#查询range中的关键字
#这个语法由于没有生效,因为存储的数据为string导致失效
GET jason/_doc/search
{"query": {"range":{"uid": {"gte": 165,"lte": 177}}}
}#exist存在字段查询,其实就是非null的一些字段数据
GET jason/_doc/_search
{"query":{"exists":{"field": "uid"}}
}#bool可以用来合并多个过滤条件查询结果的布尔逻辑
GET jason/_doc/_search
{"query":{"bool":{"must":{"term":{"phone": "176206660"}},"must_not":{"term":{"uid": "7890"}},"should":[{"term":{"uid": "176"}}],"adjust_pure_negative": true,"boost": 1}}
}#模糊查询,其中的*,?这些通配符比较耗性能
#查询在message字段上面的以ruan开头的所有数据
GET jason/_doc/_search
{"query":{"wildcard":{"message": "ruan*"}}
}#正则表达式,查询出信息为ruan到0-9的数据
GET jason/_doc/_search
{"query":{"regexp":{"message":"ruan[0-9]"}}
}#因为这不是自定义的字段,所以在数据字段类型上
#是无法进行范围查询的
PUT /questionnaire_record/_doc/9
{"id": "6","uid":"12","activityNo": "AC20122403071370181","activityCustomType":1,"elapsedTime":12,"winPrize": true,"browerFrom":"wap"
}#查询索引库中的数据
GET /questionnaire_option_record/_searchGET /questionnaire_record/_search#可以理解为查询questionnaire_record索引中
#活动编号为AC20122403071370181的数据
GET /questionnaire_record/_search
{"query":{"match":{"activityNo": "AC20122403071370181"}}
}#多条件查询,有点像mysql中的or查询语句
#查询id与UID字段数据为12的所有数据
GET /questionnaire_record/_search
{"query": {"multi_match":{"query":    "12","fields": ["id", "uid"]}}
}#通用词条查询,具体的功能还未了解到
GET /questionnaire_record/_search
{"query":{"common": {"body": {"query": "这是一个查询测试","cutoff_frequency": 0.001}}}
}#功能点:根据一个字段
#查询出它的值为pc或者是wap的数据
#有点像mysql中的or关键字
GET /questionnaire_record/_search
{"query":{"query_string": {"default_field": "browerFrom","query": "(pc)"}}
}#简单查询字符串查询不会引起异常,并且会丢弃查询的无效部分
#就是将应用来源中的app排除在外,同时过滤出pc部分的数据
GET /questionnaire_record/_search
{"query":{"simple_query_string": {"query": "\"pc\" -app","fields": ["browerFrom"]}}
}#倒排索引中包含确切术语的文档,精确查询出活动编号为Ac20122403071370181的数据
POST /questionnaire_record/_search
{"query":{"term":{"activityNo": "AC20122403071370181"}}
}#范围查询只能作用在数字字段上,string类型
#这个写法好像是不支持的
GET /questionnaire_record/_search
{"query":{"range": {"uid":{"gte":1,"lte":14,"boost": 1}}}
}#返回null原始字段中至少具有一个非值得文档,将字段winPrize中的非空数据展示出来
GET /questionnaire_record/_search
{"query":{"exists":{"field": "winPrize"}}
}#测试es中的范围查询数据,区别点:
#在这个数据插入部分其中的age字段的值都是整数型
PUT /school/student/14
{"name": "JetWu","age": 22,"city": "chengdu","interests":["run","qiicky_run","mountain climbing"],"introduction": "i am form hengyang. i love my hometown"
}PUT /school/student/8
{"name": "jason","age": 18,"city": "hefei","interests": ["swiming","sleep"],"introduction": "阳光男孩"
}PUT /school/student/4
{"name": "hello","age":15,"city": "china","interests":["chinese","game"],"introduction":"大家好,我是一个宅男"
}#查询数据是否插入成功
GET /school/_search/#范围查询数据,查询出年龄大于等于15且小于等于20的数据
#经过执行后发现boost属性好像并没有生效
GET /school/student/_search
{"query":{"range":{"age":{"gte":15,"lte":20,"boost": 2.0}}}
}#这个语句与前面的语句的作用是一样的#都是查询在age这个字段上面非空的数据,查询出age字段上非空的数据
GET /school/student/_search
{"query":{"exists": {"field": "age"}}
}#前缀查询,匹配具有包含带有指定前缀的术语的字段的文档
#查询出名称这个字段上为Jason的数据
GET /school/student/_search
{"query":{"prefix":{"name": {"value": "jason"}}}
}#通配符查询,其中*代表是所有的,?代表的
#就是一个字符
#wildcard有点像like关键字,查询出name在jet?u的数据
GET /school/student/_search
{"query":{"wildcard": {"name":{"value": "jet?u"}}}
}#模糊查询
#该fuzzy查询将生成在中指定的最大编辑距离内的匹配术语
GET /school/student/_search
{"query":{"fuzzy": {"name":"jason"}}
}#类型查询,查询出对应的表数据,查询索引库中的type类型值为student的数据
GET /_search
{"query":{"type":{"value" : "student"}}
}#ID查询相关的数据与dsl数据,查询数据id值在5.8.9这三个字段上的所有数据
GET /_search
{"query":{"ids" : {"type":"student","values":["5","8", "9"]}}
}#恒定分数查询
GET /_search
{"query":{"constant_score": {"filter": {"terms":{"name": "jason"}},"boost": 1.2}}
}#布尔查询--就是有点像多条件查询意思
#首先测试must查询语句
#查询出名称必须是jaosn,年龄不为13,且introduction应该为阳光男孩的数据
POST /school/student/_search
{"query":{"bool":{"must":[{"match":{"name": "jason"}}], "must_not": [{"match": {"age":13}}], "should": [{"match": {"introduction": "阳光男孩"}}]}}
}#最佳字段查询,这样有利于搜索数据,这个语句就是
GET /school/student/_search
{"query": {"dis_max": {"queries": [{"match":{"name": "chengdu"}},{"match": {"city":"chengdu"}}]}}
}#查询插入的语句
GET /my_index/_search/#由于要使用嵌套查询,我们这边就需要采用重新定义数据结构
#所以我们在定义数据结构时,我们是需要采用嵌套语句定义的
#定义一个数据结构PUT blog{"mappings": {"_doc":{"properties":{"blog":{"properties":{"title":{"type":"keyword"},"content":{"type":"text"},"comment":{"type":"nested","properties":{"content":{"type": "text"},"username":{"type":"keyword"}}}}}}}}}#往刚才定义的嵌套语句中插入数据
PUT blog/_doc/1
{"blog":{"title":"this is my first blog","content": "this is my first blog content","comment":[{"content": "oh so good","username": "zhang san"},{"content": "so bad","username": "lisi"}]}
}GET blog/_search
#然后查询出张三的评论数据
GET blog/_search
{"query":{"bool":{"must":[{"match":{"blog.comment.content": "good"}},{"match": {"blog.comment.username": "lisi"}}]}}
}

总结点:在实践这些dsl语句中主要碰见一些问题是如下的
1:在时间范围查询语法中,主要是涉及到数据类型无法执行查询
2:没有实践时间范围的查询
3:在范围查询中的boost属性没有生效
4:前缀查询中踩过的坑,如果内容中的有中文字段时是没法过滤出数据的

es中的dsl练习题-----简单的dsl语句相关推荐

  1. 零基础学习数据库SQL教程(一)(简单的SELECT语句 简单的INSERT语句 简单的UPDATE语句 简单的DELETE语句)

    写在前面的话:本文章内容是自己在LintCode网站SQL教程学习过程中做的学习总结,以便自己复习和大家学习,如果去刷此网站的题,也可以把此文作为参考答案来使用.例题的答案是本人所写,并且已经运行成功 ...

  2. 使用Antlr实现简单的DSL - nick hao - 博客园

    使用Antlr实现简单的DSL - nick hao - 博客园

  3. es中的search_type简单理解

    es中只要用到了两种search_type,一种是query_then_fetch(默认),另一种是dfs_query_then_fetch,我们知道计算某个文档的得分时主要使用的是tf/idf公式, ...

  4. Elasticsearch和Hive整合,将hive数据同步到ES中

    1 Elasticsearch整合Hive 1.1 软件环境 Hadoop软件环境 Hive软件环境 ES软件环境 1.2 ES-Hadoop介绍 1.2.1 官网 https://www.elast ...

  5. ES中SQL查询详解

    一.Elasticsearch SQL简介 Elasticsearch SQL 是一个 X-Pack 组件,它允许对 Elasticsearch 实时执行类似 SQL 的查询.无论是使用 REST 接 ...

  6. ES中的Query与Filter的区别

    QElasticsearch支持很多查询方式,其中一种就是DSL,它是把请求写在JSON里面,然后进行相关的查询. Query DSL 与 Filter DSL DSL查询语言中存在两种:查询DSL( ...

  7. ES中如何实现类似having的先聚合再过滤查询

    一.问题描述: 在mysql数据库中,我们可以很方面的通过having关键字实现对聚合结果的过滤查询.那么,在ES中该如何实现类似having的先聚合再过滤查询呢? 二.业务场景: 需要找出下单次数大 ...

  8. ES(一):ES基本概念和原理简单介绍

    Elasticsearch概述: ES是基于Lucene的搜索服务器,它提供了一个分布式多用户能力的全问搜索引擎,且ES支持RestFulweb风格的url访问.ES是基于Java开发的开源搜索引擎, ...

  9. Elasticsearch(038):es中搜索之入门与分页搜索

    ES中搜索的方式分为两种,一种是通过URL参数进行搜索:另一种是通过POST中body请求参数进行搜索. 针对第一种我们进行简单的讲解,我们关注的核心放在第二种上面. 一.简单搜索(search) 1 ...

最新文章

  1. html抽取正文内容 c++,如何用C/C++获取html或shtml文件的内容?
  2. python隐藏windows磁盘
  3. css3怎么排除第一个,css怎么排除第一个子元素
  4. opengl模板缓冲区
  5. IIS配置文件上传大小限制
  6. C\C++中函数后面加const
  7. 红番茄(VS2017)两个注意点
  8. 滚动截屏苹果_苹果超好用的长截图软件—滚动截屏免费分享!
  9. QQ坦白说_6.09前
  10. QTreeWidget的右键菜单实现
  11. 【Android 学习】之二维码扫描开发(闪光灯功能)
  12. scikit-opt的使用
  13. Java多态学习笔记
  14. Flask框架(一)flak视图和URL
  15. 如何使用HTTPS防止dns劫持、https如何防止dns劫持
  16. c#生成PPT总结(Microsoft.Office.Interop)
  17. 一份给艺术爱好者的书单
  18. html布局优先级,iOS Masonry 设置布局优先级。
  19. 奥利给,redis项目中初体验
  20. jQuery夹娃娃小游戏

热门文章

  1. 华为最强科普(1):什么是集成电路?工艺/CPU/GPU又是哪路大神?
  2. java 不等待 视频转码_java调用ffmpeg,mencoder进行视频转换,读取时长等
  3. EasyTouch+Joystick 插件
  4. Meteorographica:一个用Python绘制天气图的气象代码库
  5. cocos2d-x 使用位图工具BMFont自定义字体 fnt
  6. FXOS8700CQ 6轴传感器的介绍与调试
  7. Windows10编译MySQL8.0.28源码
  8. sh脚本中一些命令使用总结及sed命令
  9. C++模板元编程电子书下载
  10. 8.ring3-破坏knowndlls反劫持保护