ElasticSearch语法使用

前言

kibana作为ElasticSearch的视图,可以在界面上操作ElasticSearch的索引或者索引数据,本文是基于kibana8界面的,因为不同的版本界面有点差异

查看索引数据

进入kibana,然后点击左边菜单栏

然后点击

查看索引数据,具体界面为

创建索引

点击create index按钮,可以创建索引

输入索引名称,点击save就可以创建索引

查看索引数据

点击索引进入到界面

点击try in Console点击语法查询界面,其语法如下

_bulk

_bulk 操作 可以在单个请求中一次执行多个新增、修改、删除操作,使用这种方式可以极大的提升索引性能。

json 复制代码
POST _bulk?pretty
{ "index" : { "_index" : "aaa" } }
{"name": "foo", "title": "bar"}

往索引aaa添加数据

_search查询数据
查询该索引下所有数据
bash 复制代码
GET /aaa/_search

这个查询aaa索引所有数据

根据条件查询
match
json 复制代码
{
  "query": {
    "match": {
      "name": "张三"
    }
  }
}

该语法是查询索引数据中带有"张三"的数据,但是es采用的是倒排索引,也就是拆词,索引name中带有"张三"的数据,会被查出来 备注 如果要精准查询,可以在字段加个keyword

bash 复制代码
GET /aaa/_search
{
  "query": {
    "match": {
      "name.keyword": "张三"
    }
  }
}

查询结果为

must

must子句:文档必须匹配must查询条件

bash 复制代码
GET /aaa/_search
{
  "query": {
    "bool": {
      "must": [
        {
          "match": {
            "name": "张三"
          }
        }
      ]
    }
  }
}
must_not

文档不能匹配must_not查询条件; 语法为

bash 复制代码
GET /aaa/_search
{
  "query": {
    "bool": {
      "must": [
        {
          "match": {
            "name": "张三"
          }
        }
      ],
      "must_not": [
        {
          "match": {
            "title": "bar"
          }
        }
      ]
    }
  }
}
should

should子句:文档应该匹配should子句查询的一个或多个; 语法为

bash 复制代码
GET /aaa/_search
{
  "query": {
    "bool": {
      "should": [
        {
          "match": {
            "name": "张三"
          }
        },
         {
          "match": {
            "name": "asds"
          }
        }
      ]
    }
  }
}

可以理解为查询name包含张三或者asds,查询结果为

filter

根据类型过滤,如根据年龄过滤

bash 复制代码
GET /aaa/_search
{
  "query": {
    "bool": {
      "filter": [
        {
          "range": {
            "age": {
              "gte": 10,
              "lte": 20
            }
          }
        }
      ]
    }
  }
}
根据id查询

(1)根据id查询单个

bash 复制代码
GET /aaa/_doc/1

(2)根据多个id取回多个文档

bash 复制代码
GET /_mget
{
   "docs" : [
      {
         "_index" : "aaa",
         "_id" :    20
      },
      {
         "_index" : "aaa",
         "_id" :    1
      }
   ]
}
保存数据

(1)指定主键

bash 复制代码
PUT /aaa/_doc/20
{
  "id": 20,
  "name": "John",
  "age": 20
}

指定文档的id为20

(2)随机生成主键id

bash 复制代码
POST /aaa/_doc
{
  "id": 20,
  "name": "Joh1n",
  "age": 20
}
更新数据
bash 复制代码
PUT /aaa/_doc/20
{
  "id": 20,
  "name": "John20",
  "age": 20
}

如果id=20存在就更新

总结

es是一个非常优秀的框架,在开发过程中,如果存在数据量过大的话,可以考虑一下用es存储

相关推荐
麷飞花1 分钟前
Intellij Idea 操作汇总
java·intellij-idea·idea
Apifox4 分钟前
Apifox 12 月更新| AI 生成用例同步生成测试数据、接口文档完整性检测、设计 SSE 流式接口、从 Git 仓库导入数据
前端·后端·测试
码农水水4 分钟前
蚂蚁Java面试被问:接口幂等性的保证方案
java·开发语言·面试
毕设源码-钟学长7 分钟前
【开题答辩全过程】以 高校课程档案管理系统的设计与实现为例,包含答辩的问题和答案
java·开发语言
Taylor不想被展开7 分钟前
Trae CN 如何修改默认 JDK 版本
后端
ps酷教程11 分钟前
ChunkedWriteHandler源码浅析
java·netty·分块传输
扶苏-su19 分钟前
Java-文件
java·开发语言
Tomorrow'sThinker20 分钟前
篮球裁判犯规识别系统(四) foul_fn函数 上
java·前端·javascript
FreeBuf_28 分钟前
“前缀替换“攻击引发恐慌:高度仿真的“Jackson“冒牌库入侵Maven中央仓库
java·python·maven
普通网友33 分钟前
PictureSelector 相册全白不显示问题
java·开发语言