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存储

相关推荐
xjz184215 小时前
Rust 注释:从 // 到 rustdoc
后端
Lansonli16 小时前
大数据Spark(八十八):Spark任务资源之Standalone集群测试
java·服务器·spark
syyjhchou16 小时前
自己搭企业内部中转站,怎么让请求更容易命中缓存
人工智能·后端·语言模型·aigc
budingxiaomoli16 小时前
Spring AOP
java·spring·java-ee
特立独行的猫A16 小时前
Ionic + 仓颉语言的 cj-tauri 开发框架实战:开发精美移动端 APP
java·后端·python
nice_lcj52016 小时前
LRU 缓存入门:它是什么、怎么用、面试怎么手写
java·数据结构·缓存·面试·lru
SomeOtherTime17 小时前
Rust集合(AI回答)
开发语言·后端·rust
文丑颜不良啊17 小时前
LeetCode2741~2760题目解析
java·leetcode
我不会起名字32217 小时前
req.Seqs[len-1]:空切片防御缺口与 RPC 二次校验
后端·mongodb·go·即时通讯·im·故障排查
脚本自动化开发18 小时前
京东PLUS开卡红包刷50元的方法
后端