文档章节

elasticsearch 6.x的基本dsl语句

长恭
 长恭
发布于 10/20 14:51
字数 976
阅读 20
收藏 0

【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>

本文使用的谷歌浏览器插件sense,链接如下sense插件(兼容es6.x版本)

  • 查看集群状态
http://106.12.27.130:9200/_cat/health?v
  1. 绿色-一切都很好(集群功能齐全)
  2. 黄色——所有的数据都是可用的,但是有些副本还没有被分配(集群是完全功能的)
  3. 红色——有些数据由于某种原因无法使用(集群部分功能)
  • 查看所有的索引
http://106.12.27.130:9200/_cat/indices?v
  • 创建索引
PUT /store
  • 插入数据
/<index>/<type>/[<id>]

其中index、type是必须提供的。
id是可选的,不提供es会自动生成。
index、type将信息进行分层,利于管理。
index可以理解为数据库;type理解为数据表;id相当于数据库表中记录的主键,是唯一的。

PUT /store/books/1
{
  "title": "Elasticsearch: The Definitive Guide",
  "name" : {
    "first" : "Zachary",
    "last" : "Tong"
  },
  "publish_date":"2015-02-06",
  "price":"49.99"
}
  • 查询
GET /store/books/1/
  • 删除(store为索引值)
DELETE /store
  • 修改
POST /store/books/1/_update
{
  "doc": {
     "price" : 88.88
  }
}
  • 批量操作
    除了能够索引、更新和删除单个文档之外,Elasticsearch还可以使用_bulk API批量执行上述任何操作。这个功能非常重要,因为它提供了一种非常有效的机制,可以在尽可能少的网络往返的情况下尽可能快地执行多个操作。
  • 首先再添加一本书
PUT /store/books/2
{
  "title": "Elasticsearch Blueprints",
  "name" : {
    "first" : "Vineeth",
    "last" : "Mohan"
  },
  "publish_date":"2015-06-06",
  "price":"35.99"
}
  • 查询是否有两条记录
GET /store/books/_search
  • 实例
POST _bulk
{ "index" : { "_index" : "test", "_type" : "_doc", "_id" : "1" } }
{ "field1" : "value1" }
{ "delete" : { "_index" : "test", "_type" : "_doc", "_id" : "2" } }
{ "create" : { "_index" : "test", "_type" : "_doc", "_id" : "3" } }
{ "field1" : "value3" }
{ "update" : {"_id" : "1", "_type" : "_doc", "_index" : "test"} }
{ "doc" : {"field2" : "value2"} }
  • 实战:分别修改两个商品的价格
POST _bulk
{ "update" : {"_id" : "1", "_type" : "books", "_index" : "store"} }
{ "doc" : {"price" : "10.99"} }
{ "update" : {"_id" : "2", "_type" : "books", "_index" : "store"} }
{ "doc" : {"price" : "111.22"} }
  • url查询方式
http://106.12.27.130:9200/store/books/_search

json查询语句

按照价格升序

GET /store/books/_search
{
  "query": { "match_all": {} },
  "sort": [
    { "price": "asc" }
  ]
}

分页查询

GET /store/books/_search
{
  "query": { "match_all": {} },
  "from": 0,
  "size": 10
}
  • 解析:from参数(基于0)指定从哪个文档索引开始,size参数指定从from参数开始返回多少文档。这个特性在实现搜索结果分页时非常有用。注意,如果未指定from,则默认为0。

查询特定字段

GET /store/books/_search
{
  "query": {
    "match_all": {}
  },
  "_source": [
    "name.first",
    "price"
  ]
}
  • 理解成sql语句的话就是
select first,price from books

模糊查询

GET /store/books/_search
{
  "query": { "match": { "price": "111.22" } }
}
  • 理解为sql语句的话就是
select price form books where price like %"111.22"%

match vs match_phrase

  • match 返回title中包含“Elasticsearch”或“Blueprints”的所有书籍,所以两条记录都能被查出来
GET /store/books/_search
{
  "query": { "match": { "title": "Elasticsearch Blueprints" } }
}
  • match_phrase 返回title中包含“Elasticsearch Blueprints”的所有书籍,只能查出一条记录
GET /store/books/_search
{
  "query": { "match_phrase": { "title": "Elasticsearch Blueprints" } }
}

bool查询(must,must_not,should)

  • bool must子句指定所有查询,这些查询必须为true,才能将文档视为匹配。must相当于逻辑与操作&
GET /store/books/_search
{
  "query": {
    "bool": {
      "must": [
        { "match": { "title": "Elasticsearch" } },
        { "match": { "title": "Blueprints" } }
      ]
    }
  }
}
  • bool should,返回title中包含“Elasticsearch”或“Blueprints”的所有书籍。should相当于逻辑与操作|
GET /store/books/_search
{
  "query": {
    "bool": {
      "should": [
        { "match": { "title": "Elasticsearch" } },
        { "match": { "title": "Blueprints" } }
      ]
    }
  }
}
  • bool must_not,返回title中既不包含“Elasticsearch”也不“Blueprints”的所有书籍
GET /store/books/_search
{
  "query": {
    "bool": {
      "must_not": [
        { "match": { "title": "Elasticsearch" } },
        { "match": { "title": "Blueprints" } }
      ]
    }
  }
}
  • 配合使用,title中既包含“Elasticsearch”但是不包含“Blueprints”的所有书籍
GET /store/books/_search
{
  "query": {
    "bool": {
      "must": [
        {"match": { "title": "Elasticsearch" }}
      ], 
      "must_not": [
        { "match": { "title": "Blueprints" } }
      ]
    }
  }
}

filter操作

  • 比如我们按价格区间来查找
GET /store/books/_search
{
  "query": {
    "bool": {
      "must": { "match_all": {} },
      "filter": {
        "range": {
          "price": {
            "gte": 10,
            "lte": 200
          }
        }
      }
    }
  }
}
  • 等同于sql语句
select * from books where price>=10 and price<=200

© 著作权归作者所有

长恭
粉丝 7
博文 9
码字总数 4011
作品 0
南京
高级程序员
私信 提问
bboss v5.2.1 发布,Elasticsearch Rest Client

The best Elasticsearch Highlevel Rest Client API-----bboss v5.2.1 发布。 主要功能特色 ElasticSearch兼容性:2.x,5.x,6.x,+ JDK兼容性: jdk 1.7+ Spring boot兼容性:1.x,2.x ORM和DSL二......

bboss
2018/11/27
724
2
bboss elasticsearch v5.0.3.9.5 发布

bboss elasticsearch v5.0.3.9.5发布。 bboss elasticsearch特性 bboss es是一个不错的elasticsearch java客户端、高性能Elasticsearch ORM开发库。bboss es类似于mybatis,使用xml文件管理e...

bboss
2018/03/02
710
1
Elasticsearch Rest Client bboss v5.5.6 发布

The best Elasticsearch Highlevel Rest Client API-----bboss v5.5.6 发布。 主要功能特色 ElasticSearch兼容性:1.x,2.x,5.x,6.x,+ JDK兼容性: jdk 1.7+ Spring boot兼容性:1.x,2.x ORM和D......

bboss
03/16
717
0
Elasticsearch Rest Client bboss v5.6.9 发布

The best Elasticsearch Highlevel Rest Client API-----bboss v5.6.9 发布。 bboss elasticsearch 是一套基 于query dsl 语法操作和访问分布式搜索引擎 elasticsearch 的 o/r mapping 高性能......

bboss
05/13
1K
2
bboss elasticsearch v5.0.6.0 发布

bboss elasticsearch v5.0.6.0 发布 bboss elasticsearch是一款高性能的elasticsearch orm java客户端框架,具备以下主要特性: 简单易用:基于xml配置和管理dsl,在dsl脚本中可以使用变量、...

bboss
2018/04/20
1K
2

没有更多内容

加载失败,请刷新页面

加载更多

是否有内置功能可以打印对象的所有当前属性和值?

所以我在这里寻找的是类似PHP的print_r函数。 这样一来,我可以通过查看问题对象的状态来调试脚本。 #1楼 可能值得一看- 是否有与Perl的Data :: Dumper等效的Python? 我的建议是 https://gi...

技术盛宴
18分钟前
5
0
直击面试,聊聊 GC 机制

前言 文章来源:https://studyidea.cn/ GC 中文直译垃圾回收,是一种回收内存空间避免内存泄漏的机制。当 JVM 内存紧张,通过执行 GC 有效回收内存,转而分配给新对象从而实现内存的再利用。 ...

程序通事
20分钟前
4
0
Mybatis where 1=1 和 标签

在mybatis中拼接查询语句,偶尔会出现where后面可能一个字段的值都没有,就导致所有条件无效,导致where没有存在的意义;但也有可能这些条件会存在。那解决这个问题的方法,最常见的就是: ...

观海562
23分钟前
4
0
git常用初始化设置

日志编辑工具 git config --global core.editor vim ssh访问 cd /home/weiguangyue/.sshssh-keygen -t rsa -C weiyue888999@126.com 提交者信息用户名 git config --global user.nam......

萧默
24分钟前
4
0
面试题-关于Java线程池一篇文章就够了

在Java面试中,线程池相关知识,虽不能说是必问提,但出现的频次也是非常高的。同时又鉴于公众号“程序新视界”的读者后台留言让写一篇关于Java线程池的文章,于是就有本篇内容,本篇将基于J...

程序新视界
27分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部