初学ES

把它当做数据库学习,比较容易理解

只创建索引(表)

1. 创建

(可以理解为创建数据库中的表)

PUT 索引名(表名)
{
"mappings": {
"properties": {
"age"(字段名):{
"type": "integer"(字段类型)
},
"title"(字段名):{
"type": "text"(字段类型)
}
}
}
}

2.创建好后查看索引结构

get 索引名

添加文档(数据)

如果索引不存在会先创建索引(表名)后创建(插入)文档(数据)

格式 :PUT 索引名(表名)/文档类型(类似于一个标识)/文档id(数据库表中的数据id)

PUT /db/_doc/1
{
"age":20,
"content":"内容:学习决定命运,细节决定成败",
"name":"张三的名字",
"title":"标题:学习决定命运,细节决定成"
}

执行后,相当于在db数据库创建了一个id为1的一条数据,可通过elasticsearch-head查看

查看文档(数据)

GET 索引名/文档类型/文档id

GET /db/_doc/1

version:版本号,从1开始记录,每次修改都会+1

_source:文档数据(可以理解为java返回的Model)

修改文档数据(数据update)

put方式修改

put /索引名/文档类型/文档Id
{
"age":19,(修改的新值)
"content":"1"(修改的新值)
}

注意:我原本数据中有name\title列,我执行的PUT操作没有写明name\title,执行后该文档就没有name\title字段了

post方式修改

POST /索引名/文档类型/文档Id/_update
{
"name":"张三的名字叫李四"
}

推荐使用这种方式,这种方式可以想改哪些字段的值就改哪些,不改的无需再次传入,不会消失,更方便

删除文档&索引

删除索引:delete 索引名

删除文档:delete 索引名/文档类型/文档id

各种条件查询

为了方便演示,首先先添加几条数据

1.简单搜索(根据某个字段查询)

根据上面GET DB得知,name字段type=keyword,content的字段type=text

模糊查找

text:会被IK粉刺及拆分

发现content中包含“内容”的全部查出来了

GET /db/_doc/_search?q=content:内容

精确查找

keyword:不会被IK分词器拆分

发现只有完全匹配才可以查出来

另外一种单字段查询方式

GET db/_doc/_search
{
"query":{
"match":{
"content":"学习"
}
}
}

2.复杂搜索

must与term区别

must是会进行模糊查询,term不会

例如一个content字段Type=text,使用must搜索关键字就可以搜出来,使用term就不行

多条件查询

must(And)

匹配年龄=20且内容包含“学习”的数据

GET db/_doc/_search
{
"query": {
"bool": {
"must": [
{
"match": {
"content":"学习 是的" 匹配满足“学习”或“是的”的数据,多条件使用空格隔开
}
},
{
"match": {
"age":20
}
}
]
}
}
}

should(or)

匹配content包含“王五”或者年龄为25的数据

GET db/_doc/_search
{
"query": {
"bool": {
"should": [
{
"match": {
"content":"王五"
}
},
{
"match": {
"age":25
}
}
]
}
}
}

must_not (!=)

匹配content不包含“王五”且年龄不为25的数据

GET db/_doc/_search
{
"query": {
"bool": {
"must_not": [
{
"match": {
"content":"王五"
}
},
{
"match": {
"age":25
}
}
]
}
}
}

区间查询

查询年龄≥20且≤25的数据

GET db/_doc/_search
{
"query": {
"bool": {
"filter":{
"range":{
"age":{
"gte":20,
"lte":25
}
}
}
}
}
}

gt 大于

gte 大于等于

lt 小于

lte 小于等于!

自定义字段返回

只返回age\name字段

GET db/_doc/_search
{
"query": {
"bool": {
"filter":{
"range":{
"age":{
"gte":20,
"lte":25
}
}
}
}
},
"_source": ["age","name"]
}

排序

按照年龄降序及分值降序排列,注意:如果没有查询条件,排序是没有_score分值的

GET db/_doc/_search
{
"query":{
"match":{
"content":"学习 是的"
}
},
"sort":[
{
"_score":{
"order":"desc"
},
"age":{
"order":"desc"
}
}
]
}

高亮

GET db/_doc/_search
{
"query":{
"match":{
"content":"学习"
}
},
"highlight":{
"pre_tags":"<mytag style='color:blue'>",为查找的关键字添加自定义的html代码前缀
"post_tags":"</mytag>",为查找的关键字添加自定义的html代码后缀
"fields":{
"content":{} 定义要高亮的字段
}
}
}

结果如下:

分页查询

GET db/_doc/_search
{
"query":{
"match":{
"content":"学习"
}
},
"from":0, 当前第几页
"size":2 每页显示几条数据
} GET db/_doc/_count 获得指定条件下总条数有多少
{
"query":{
"match":{
"content":"李四"
}
}
}

查看索引的相关信息

可以查出来每个索引使用的空间大小,记录数等信息

GET _cat/indices?v

ElasticSearch常用查询命令-kibana中使用的更多相关文章

  1. sql常用查询命令

    目录 SQL Server常用查询命令: 查看当前时间 查询所有数据库名 查询当前使用的数据库名 查询前几条数据 去重查询 字段换名 查询不等于 查询在两个值之间数据 查询条件或 模糊匹配查询 查询为 ...

  2. Eucalyptus常用查询命令

    前言: Elastic Utility Computing Architecture for Linking Your Programs To Useful Systems (Eucalyptus)  ...

  3. mysql常用查询命令

    转引自:https://www.cnblogs.com/widows/p/7137184.html 常用mysql命令 show variables like 'character_set_clien ...

  4. ElasticSearch 常用查询语句

    为了演示不同类型的 ElasticSearch 的查询,我们将使用书文档信息的集合(有以下字段:title(标题), authors(作者), summary(摘要), publish_date(发布 ...

  5. MySQL常用查询命令(连接查询&子查询)

    多张表联合起来查询即为连接查询,可分为: 内连接:等值连接.非等值连接.自连接 外连接:右外连接.左外连接 也就是先把多张表通过某种指定条件用join...on...语法连接起来,然后再进行where ...

  6. Oracle常用查询命令

    Oracle查询完整格式如下: Select  *  from XX where XX group by YY having XX order by YY Select count(*), XX fr ...

  7. elasticsearch 常用查询 + 删除索引 + 集群状态诊断

    1.多条件查询 curl -X POST \ http://10.0.0.42:9200/addressbook_user/_search \ -H 'cache-control: no-cache' ...

  8. MySQL常用查询命令(单表查询)

    查询语法如下: select... from... where... group by... (having)... order by...; 顺序是from (从指定表中) where (具体条件) ...

  9. Oracle 学习笔记 常用查询命令篇

    1.查询某个用户下有多少张表 有时候很有用  select count(*) from dba_tables t where t.owner='SCOTT';

随机推荐

  1. ApacheCN JavaWeb 译文集 20211017 更新

    使用 Spring5 构建 REST Web 服务 零.前言 一.一些基本知识 二.在 Spring5 中使用 Maven 构建 RESTfulWeb 服务 三.Spring 中的 Flux 和 Mo ...

  2. 2019年1月9日 ES6 学习心得

    ES6为我们创建对象提供了新的语法糖,这就是Class语法.如果你对ES5中面向对象的方式比较熟悉的话,Class掌握起来也是非常迅速的,因为除了写法的不同,它并不会增加新的难以理解的知识点.我们先利 ...

  3. JAVA多线程学习十六 - 同步集合类的应用

    1.引言 在多线程的环境中,如果想要使用容器类,就需要注意所使用的容器类是否是线程安全的.在最早开始,人们一般都在使用同步容器(Vector,HashTable),其基本的原理,就是针对容器的每一个操 ...

  4. IDEA中Git的一般使用场景

    感谢大佬:https://www.cnblogs.com/javabg/p/8567790.html 工作中多人使用版本控制软件协作开发,常见的应用场景归纳如下: 假设小组中有两个人,组长小张,组员小 ...

  5. action标签中method={1}怎么理解

    其实用到method={数字}的时候,相应的前面的action是要出现*通配符来搭配的.比如一个小例子:<action name="user_*" class="U ...

  6. MySQL日志管理、备份与恢复

    MySQL日志管理.备份与恢复 目录 MySQL日志管理.备份与恢复 一.MySQL日志管理 1. MySQL日志路径 2. 设置.修改日志路径 3. 查询日志功能是否开启 二.MySQL备份与恢复 ...

  7. Ubuntu 16.04 更改系统语言为简体中文 #####避坑指南

    大家跟着我的步骤一步一步来,肯定不会出现问题的 我这里说明两点,一是切换到管理员用户,二是更新网络源! 且待大家走一遍安装流程 一.安装时报错 原因:以访客的身份进入的会报错,改为管理员进入即可. p ...

  8. Git忽略文件.gitignore的使用

    本博客旨在自我学习使用,如有任何疑问请及时联系博主 1.WHY? 当你使用git add .的时候有没有遇到把你不想提交的文件也添加到了缓存中去?比如项目的本地配置信息,如果你上传到Git中去其他人p ...

  9. Docker入门的亿点点学习

    前段时间花了些时间学习了亿点点docker,也算是入门了吧,顺便记了一下笔记拿出来分享给想要接触docker的兄弟们. 没有服务器的兄嘚可以去腾讯云或者阿里云领取免费的试用产品嗷,如果已经领取过了,又 ...

  10. OSI七层协议&TCP协议(三次握手四次挥手)

    今日内容 python 基础回顾 软件开发架构 网络理论前戏 OSI 七层协议(五层) TCP协议 三次握手与四次挥手 UDP协议 内容详细 一.python 基础回顾 1.基本数据类型 整型 int ...