ElasticSearch常用查询命令-kibana中使用
初学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中使用的更多相关文章
- sql常用查询命令
目录 SQL Server常用查询命令: 查看当前时间 查询所有数据库名 查询当前使用的数据库名 查询前几条数据 去重查询 字段换名 查询不等于 查询在两个值之间数据 查询条件或 模糊匹配查询 查询为 ...
- Eucalyptus常用查询命令
前言: Elastic Utility Computing Architecture for Linking Your Programs To Useful Systems (Eucalyptus) ...
- mysql常用查询命令
转引自:https://www.cnblogs.com/widows/p/7137184.html 常用mysql命令 show variables like 'character_set_clien ...
- ElasticSearch 常用查询语句
为了演示不同类型的 ElasticSearch 的查询,我们将使用书文档信息的集合(有以下字段:title(标题), authors(作者), summary(摘要), publish_date(发布 ...
- MySQL常用查询命令(连接查询&子查询)
多张表联合起来查询即为连接查询,可分为: 内连接:等值连接.非等值连接.自连接 外连接:右外连接.左外连接 也就是先把多张表通过某种指定条件用join...on...语法连接起来,然后再进行where ...
- Oracle常用查询命令
Oracle查询完整格式如下: Select * from XX where XX group by YY having XX order by YY Select count(*), XX fr ...
- elasticsearch 常用查询 + 删除索引 + 集群状态诊断
1.多条件查询 curl -X POST \ http://10.0.0.42:9200/addressbook_user/_search \ -H 'cache-control: no-cache' ...
- MySQL常用查询命令(单表查询)
查询语法如下: select... from... where... group by... (having)... order by...; 顺序是from (从指定表中) where (具体条件) ...
- Oracle 学习笔记 常用查询命令篇
1.查询某个用户下有多少张表 有时候很有用 select count(*) from dba_tables t where t.owner='SCOTT';
随机推荐
- 「CTSC 2011」排列
「CTSC 2011」排列 要求不存在公差为 A 或者公比为 B 的子列,那么实际上可以把该问题转化为求一个图的最优拓朴序. 任意差为 A 或者比为 B 的两个数连一条边. 求一个合法序列的答案可以用 ...
- MySQL的注释方法
MySQL的三种注释方式 #1.单行注释 -- 2.单行注释(注意中间要带有一个空格才能生效) /*3.多行注释*/
- VC 为程序创建唯一标识
转载请注明来源:https://www.cnblogs.com/hookjc/ 应用: 一台机器上只许运行一个客户端 同一个账号只允许登陆一个客户端 BOOl m_IsRun=false; HANDL ...
- laravel 依赖注入 接口设计
假设我现在需要做一个支付服务,那么我先设计一个接口 interface PayInterface{ public function pay(Order $order) : string; } 然后实现 ...
- endl与\n的区别
看C++Primer的时候看到的,然后去百度了一下: 比较明白的解释: 1.区别在于: \n只代表换行的转义字符 endl除了代表换行,还紧跟着清出缓冲槽 2.接下来我们看一下具体内容的辨析: 要明白 ...
- 实现“手机qq”侧滑菜单 -- 吴欧
基本数据采集 经过体验,手机QQ采用的应该是线性动画,即视图缩放比例等随手指在屏幕上滑动的距离以一次方程的形式变化. 提取基本数据,向右侧滑达到最大幅度时: 1. 右侧主视图左边界距离屏幕左边界的 ...
- WebLogic11g- 集群化
其实网上关于weblogic集群的资料非常多[大部分都是从创建新的domain开始,我这篇先介绍怎么样把原本普通的domain改造为集群环境],如果觉得不够,可以啃weblogic的官方文档.下面给几 ...
- iOS 屏幕录制实现
iOS 屏幕录制实现 目录 iOS 屏幕录制实现 录屏API版本变化 App内部录制屏幕 录音麦克风声音 App内部录屏直播 Bonjour APP广播端实现 广播端App(直播平台)的实现 iOS1 ...
- 基于XC7Z100+AD9361的双收双发无线电射频板卡
一.板卡概述 板卡基于Xilinx公司的SoC架构(ARM+FPGA)的ZYNQ7100芯片和ADI公司高集成度的捷变射频收发器AD9361,实现频谱范围70MHz~6GHz,模拟带宽200KHz~5 ...
- Solution -「APIO 2016」「洛谷 P3643」划艇
\(\mathcal{Description}\) Link & 双倍经验. 给定 \(n\) 个区间 \([a_i,b_i)\)(注意原题是闭区间,这里只为方便后文描述),求 \(\ ...