1.背景

ES数据库是非关系型数据库

2.ES数据库优点

1.存储优化

内存中使用有限状态机FST优化

本质上是前缀树加上后缀树的结合,利用这个数据结构可以把Term更节省内存地放置并查询,它有着字典树的查询时间复杂度,但是由于做了后缀合并会更节约内存

传统Bitmap优化

使用Bitmap来记录文档的Id,每个bit对应一个文档,表示它是否存在。

2.联合查询优化

若要对多个term做联合查询,比如做AND来查询,实际上便是联合各个term产生的跳表Skip-list做查询

Term Query中使用AND操作就是利用跳表来做联合查询。比如搜索Term为Address中同时包含关键字Road和District的文章,就可以找到二者的倒排然后选取短的序列用作遍历,长的用作构造跳表,随后只要遍历短的列表里的文章逐个去跳表里寻找就可以了

3.算法

ES数据库中集成了数据分析器Analyzer,例如Charater Filter(特殊字符替换) -> Tokenizer(分词) -> Token Filter(每个词处理)

在数据分析,自然语言处理中非常常见

4.ES数据库集群化,分片,主从备份机制,容灾能力

3.ES数据库缺点

1.浪费空间

由于ES数据库采用文档Id分布,当文档很稀疏时,将会很浪费空间

4.ES数据库restful操作

域名:127.0.0.1:9200

操作的index: twitter

注意如果index未定义mapping,会根据你当前的数据结构,自动定义mapping,

1.根据_id写入数据,如果存在则无法写入PUT twitter/_create/1{"user" : "kimchy","post_date" : "2009-11-15T14:12:12","message" : "trying out Elasticsearch"}2. 根据_id更新数据或写入数据(不会报错,整体更新)PUT twitter/_doc/1?timeout=5m{"user" : "kimchy","post_date" : "2009-11-15T14:12:12","message" : "trying out Elasticsearch"}timeout=5m 这里设置超时操作3.增量式写入数据(自动将生成随机_id)POST twitter/_doc/{"user" : "kimchy","post_date" : "2009-11-15T14:12:12","message" : "trying out Elasticsearch"}4.根据_id查询数据GET twitter/_doc/0?_source=false_source=false 表示将数据屏蔽调_source_includes=message,post_date 表示加载的数据资源GET twitter/_source/1?_source_includes=message,post_date_source_includes=message,post_date 表示加载的数据资源5.根据_id删除数据DELETE /twitter/_doc/1?timeout=5m6.更新数据中某字段POST /twitter/_update/1{"doc" : {"user" : "lijiacai","age": 12},"detect_noop": false,"doc_as_upsert" : true}"detect_noop": false  如果在发送请求之前name是new_name,那么将忽略整个更新请求。如果请求被忽略,则响应中的result元素返回noopdoc_as_upsert: true 表示存在则更新该字段,不存在则插入7.根据条件批量获取数据GET /twitter/_mget  或者 /twitter/_doc/_mget其中_index 与url中的twitter对应,如果url未给出则参数中给出,反之url中给出,以下接口同理{"docs" : [{"_index" : "twitter","_type" : "_doc","_id" : "1"},{"_index" : "twitter","_type" : "_doc","_id" : "2"}]}8.根据条件批量筛选字段GET /test/_mget{"docs" : [{"_id" : "1"},{"_id" : "2","_source" : {"include": ["others"],"exclude": ["others.name"]}}]}include  包含字段exclude  不包含字段9.批量写POST _bulk{ "index" : { "_index" : "test", "_id" : "1" } }{ "field1" : "value1" }{ "delete" : { "_index" : "test", "_id" : "2" } }{ "create" : { "_index" : "test", "_id" : "3" } }{ "field1" : "value3" }{ "update" : {"_id" : "1", "_index" : "test"} }{ "doc" : {"field2" : "value2"} }注意这里格式,是多级结构得字典,传入参数是以换行符区分的10.按条件删除数据POST twitter,other_index/_delete_by_query{"query": { "match": {"message": "some message"}}}可以给多个index表11.根据条件查询数据POST /twitter/_search{"query": {"bool" : {"must" : {"query_string" : {"query" : "some query string here"}},"filter" : {"term" : { "user" : "kimchy" }}}}}12.请求body查询其他参数见:https://www.elastic.co/guide/en/elasticsearch/reference/current/search-request-from-size.htmlGET /twitter/_search{"query" : {"term" : { "user" : "kimchy" }}}13.查询表结构GET /twitter/_mapping14.查询集群状态GET /_cluster/health15.查询index映射关系GET /_cat/aliases?v16.查询集群文档数量GET /_cat/count?v17.query查询URIGET /twitter/_search?q=field: value多个字段 使用AND 或者 OR参数:sort,from,size,q,_source等详情参照文档:https://www.elastic.co/guide/en/elasticsearch/reference/current/search-uri-request.html
18.查询index的文档数量GET /twitter/_count?q=user:kimchy,

es数据库查询API相关推荐

  1. elasticsearch(es)高级查询api

    yml配置 #es配置 spring:elasticsearch:rest:uris: 192.168.16.188:9200 添加依赖 <dependency><groupId&g ...

  2. geoip java api_利用GeoIP数据库及API进行地理定位查询 Java

    地理定位查询的的数据库比较多,而且大多都开放一些free的版本 国内的有纯真数据库等,但是他只提供文本的地理位置信息,不提供经纬度数据 当应用到google map时,就不可以了 国外的有MaxMin ...

  3. appinventor连接MySQL_APPInventor网络数据库浏览器(TinyWebDB查询API)

    APPInventor网络数据库浏览器(TinyWebDB查询API) APP Inventor中的网络数据库TinyWebDB只能够查询单个Tag,返回单个Value,虽然可以用列表,但还是很不方便 ...

  4. 普罗米修斯使用es数据库_用普罗米修斯和格拉法纳仪法来豪猪

    普罗米修斯使用es数据库 Adam Bien的Porcupine库使配置充当应用程序隔板的专用执行程序服务变得容易. 我创建了一个扩展,通过MicroProfile Metrics公开了豪猪统计信息. ...

  5. 【elasticsearch】ES数据库重建索引 -- Reindex(数据迁移)

    1.应用背景: 1.当你的数据量过大,而你的索引最初创建的分片数量不足,导致数据入库较慢的情况,此时需要扩大分片的数量,此时可以尝试使用Reindex. 2.当数据的mapping需要修改,但是大量的 ...

  6. 用SpringBoot整合ES数据库基础

    一.SpringBoot整合ES数据库 1.配置原生的依赖. <properties><java.version>1.8</java.version><!-- ...

  7. Elasticsearch(es) 查询语句语法详解

    Elasticsearch 查询语句采用基于 RESTful 风格的接口封装成 JSON 格式的对象,称之为 Query DSL.Elasticsearch 查询分类大致分为全文查询.词项查询.复合查 ...

  8. es 安装以及api

    一.引言 1.1 海量数据 在海量数据中执行搜索功能时,如果使用MySQL,效率太低 1.2 全文检索 在海量数据中执行搜索功能时,如果使用MySQL,效率太低 1.3 高亮显示 想将搜索关键字,以红 ...

  9. ES基本查询语句教程

    前言 es是什么? es是基于Apache Lucene的开源分布式(全文)搜索引擎,,提供简单的RESTful API来隐藏Lucene的复杂性. es除了全文搜索引擎之外,还可以这样描述它: 1. ...

最新文章

  1. php安装redis扩展模块
  2. MyEclipse 的 TCP/IP Monitor 的使用
  3. css鼠标移入线条延中心伸长,css动画效果:鼠标移上去底部线条从中间往两边延伸 - 子成君-分享出去,快乐加倍!-旧版已停更...
  4. python函数:基础函数调用整理
  5. 长春学校计算机科学技术学院,长春大学计算机科学技术学院
  6. 基于Android的智能家居手持终端系统开发 毕业论文-A
  7. JavaScript自学笔记(1)---表单验证,let和const,JSON文件
  8. 深度学习《VAE-GAN》
  9. SpringCloud与SpringConfig分布式配置中心
  10. php 图片服务器搭建,php图像裁剪服务器搭建
  11. 手机圈老兵任伟光加盟联想
  12. 方法、脚本-Pig Grunt之简单命令及实例说明-by小雨
  13. HDU 3466 Proud Merchants 带有限制的01背包问题
  14. flash提示版本过低导致无法安装解决方法
  15. coldfusion php,在Coldfusion中加密,然后在PHP中解密
  16. Gitter:高颜值GitHub小程序客户端诞生记
  17. 手机安装pem_手机安装Charles证书
  18. 基于JavaSSM和微信小程序的智能二维码门禁管理系统
  19. 虚拟接口和SD-WAN
  20. 重启数据库服务器后数据库无法连接的解决方法

热门文章

  1. 【操作系统】多线程、生产者——消费者同步与互斥代码实现
  2. Python读取指定文件夹中的所有图片并保存
  3. RSA公钥加密与私钥解密算法
  4. Material doesn‘t have a texture property ‘_MainTex
  5. ios 闪退的原因及解决方案
  6. 自动控制原理 第一章 控制系统的一般概念
  7. linux 拼图游戏,2020经典宝石拼图
  8. 创建一个docker容器
  9. docker Swarm容器编排工具
  10. 批量升级320k百度音乐(java版本)