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

相关推荐
RainbowSea11 分钟前
12 MySQL 数据库其它调优策略
java·sql·mysql
大只鹅30 分钟前
WebSocket类明明注入了Bean,为什么报错为null
java·websocket
ChinaRainbowSea38 分钟前
9-2 MySQL 分析查询语句:EXPLAIN(详细说明)
java·数据库·后端·sql·mysql
时序数据说40 分钟前
Java类加载机制及关于时序数据库IoTDB排查
java·大数据·数据库·物联网·时序数据库·iotdb
wowocpp40 分钟前
rabbitmq 与 Erlang 的版本对照表 win10 安装方法
java·rabbitmq·erlang
风象南44 分钟前
SpringBoot基于Java Agent的无侵入式监控实现
java·spring boot·后端
崎岖Qiu1 小时前
【Spring篇08】:理解自动装配,从spring.factories到.imports剖析
java·spring boot·后端·spring·面试·java-ee
belldeep1 小时前
java:如何用 JDBC 连接 TDSQL 数据库
java·数据库·jdbc·tdsql
2301_1472583692 小时前
7月2日作业
java·linux·服务器
香饽饽~、2 小时前
【第十一篇】SpringBoot缓存技术
java·开发语言·spring boot·后端·缓存·intellij-idea