ElasticSearch常用搜索命令整理(长期更新...)
- 基础入门版
- 快速检查集群的健康状况
- 快速查看集群中有哪些索引
- 索引的CRUD操作以商品为例
- 新增商品建立索引
- 查询商品参见查询专题详解
- 修改商品name
- 删除商品
- 查询专题版
- query string search不常用
- query DSLDomain Specified Language特定领域的语言
- query filter
- full-text search全文检索
- phrase search短语搜索
- highlight search高亮搜索结果
- 批量操作
- 批量查询mget
- 批量操作bulk
基础入门版
快速检查集群的健康状况
GET /_cat/health?v
说明:如何快速了解集群的健康状况?green、yellow、red?
green:每个索引的primary shard和replica shard都是active状态的
yellow:每个索引的primary shard都是active状态的,但是部分replica shard不是active状态,处于不可用的状态
red:不是所有索引的primary shard都是active状态的,部分索引有数据丢失了
快速查看集群中有哪些索引
GET /_cat/indices?v
索引的CRUD操作,以商品为例
新增商品(建立索引)
(1)手动指定document id(用于其他库倒进来时本身就含有id的情况)
PUT /ecommerce/product/1
{"name" : "gaolujie yagao","desc" : "gaoxiao meibai","price" : 30,"producer" : "gaolujie producer","tags": [ "meibai", "fangzhu" ]
}
说明:若已经有/ecommerce/product/1该数据,此时“新增”操作变成“全量替换”,旧数据被deleted。因此如果我们要需要创建,而不允许替换数据(逻辑:若已经有该条数据,则不进行任何操作(报错回滚))
(2)自动生成document id(自动生成的id,长度为20个字符,URL安全,base64编码,GUID,分布式系统并行生成时不可能会发生冲突)
POST /ecommerce/product
{"name" : "gaolujie yagao","desc" : "gaoxiao meibai","price" : 30,"producer" : "gaolujie producer","tags": [ "meibai", "fangzhu" ]
}
查询商品(参见查询专题详解)
GET /ecommerce/product/1
修改商品name
全量替换:
PUT /ecommerce/product/1
{"name" : "jiaqiangban gaolujie yagao","desc" : "gaoxiao meibai","price" : 30,"producer" : "gaolujie producer","tags": [ "meibai", "fangzhu" ]
}
部分修改:
POST /ecommerce/product/1/_update
{"doc": {"name": "jiaqiangban gaolujie yagao"}
}
删除商品
DELETE /ecommerce/product/1
说明:不会理解物理删除,只会将其标记为deleted,当数据越来越多的时候,在后台自动删除
查询专题版
query string search(不常用)
1、搜索全部商品:
GET /ecommerce/product/_search
查询结果部分字段说明:
took:耗费了几毫秒。
timed_out:是否超时,这里是没有。
_shards:数据拆成了5个分片,所以对于搜索请求,会打到所有的primary shard(或者是它的某个replica shard也可以)。
hits.total:查询结果的数量,3个document。
hits.max_score:score的含义,就是document对于一个search的相关度的匹配分数,越相关,就越匹配,分数也高。
hits.hits:包含了匹配搜索的document的详细数据。
2、搜索商品名称中包含yagao的商品,而且按照售价降序排序
GET /ecommerce/product/_search?q=name:yagao&sort=price:desc
3、指定要查询出来商品的名称和价格
GET /ecommerce/product/_search?_source=name,price
query DSL(Domain Specified Language,特定领域的语言)
1、查询所有的商品(match_all)
GET /ecommerce/product/_search
{"query": { "match_all": {} }
}
2、查询名称包含yagao的商品,同时按照价格降序排序(sort)
GET /ecommerce/product/_search
{"query" : {"match" : {"name" : "yagao"}},"sort": [{ "price": "desc" }]
}
3、分页查询商品(from,size)
例如:总共3条商品,假设每页就显示1条商品,现在显示第2页,所以就查出来第2个商品
GET /ecommerce/product/_search
{"query": { "match_all": {} },"from": 1,"size": 1
}
4、指定要查询出来商品的名称和价格(source)
GET /ecommerce/product/_search
{"query": { "match_all": {} },"_source": ["name", "price"]
}
5、查询name和desc都含yagao的商品(multi_match)
GET /ecommerce/product/_search
{"query": {"multi_match": {"query": "yagao","fields": ["name", "desc"]}}
}
6、查询价格大于等于30的商品(range)
GET /ecommerce/product/_search
{"query": {"range": {"price": {"gte": 30}}}
}
7、查询name是yagao的商品(term 或者 terms数组指定多个)
GET /test_index/test_type/_search
{"query": {"term": {"name ": "yagao"}}
}
说明:不常用。若想用term查询,则被查询的字段需要定义为不分词。
query filter
1、搜索商品名称包含yagao,而且售价大于25元的商品
GET /ecommerce/product/_search
{"query" : {"bool" : {"must" : {"match" : {"name" : "yagao" }},"filter" : {"range" : {"price" : { "gt" : 25 } }}}}
}
说明:bool 多条件查询,含以下参数:
must:返回的doc必须满足must子句的条件,并且参与计算score
must_not:返回的文档必须不满足must_not定义的条件
should:返回的文档可能满足should子句的条件。在一个Bool查询中,如果没有must或者filter,有一个或者多个should子句,那么只要满足一个就可以返回。minimum_should_match参数定义了至少满足几个子句。
filter:返回的doc必须满足filter子句的条件,不参与计算sorce
full-text search(全文检索)
GET /ecommerce/product/_search
{"query" : {"match" : {"producer" : "yagao producer"}}
}
phrase search(短语搜索)
跟全文检索相对应,相反,全文检索会将输入的搜索串拆解开来,去倒排索引里面去一一匹配,只要能匹配上任意一个拆解后的单词,就可以作为结果返回。
phrase search,要求输入的搜索串,必须在指定的字段文本中,完全包含一模一样的,才可以算匹配,才能作为结果返回。
GET /ecommerce/product/_search
{"query" : {"match_phrase" : {"producer" : "yagao producer"}}
}
highlight search(高亮搜索结果)
GET /ecommerce/product/_search
{"query" : {"match" : {"producer" : "producer"}},"highlight": {"fields" : {"producer" : {}}}
}
批量操作
批量查询mget
获取商品id为1和2的商品信息(假设在同一个index和type下)
GET /_mget
{"docs" : [{"_index" : "ecommerce","_type" : "product","_id" : 1},{"_index" : "ecommerce","_type" : "product","_id" : 2}]
}或者GET /ecommerce/_mget
{"docs" : [{"_type" : "product","_id" : 1},{"_type" : "product","_id" : 2}]
}或者GET /ecommerce/product/_mget
{"ids": [1, 2]
}
批量操作bulk
需求:
1、删除id为1的商品
2、创建id为3的商品(name为“zhonghua yagao”)
3、修改商品2的name为“replaced zhonghua yagao”(采用全量替换的方式)
4、修改商品3的name为“bulk zhonghua yagao”(采用部分更新的方式)
POST /_bulk
{ "delete": { "_index": "ecommerce", "_type": "product", "_id": "1" }}
{ "create": { "_index": "ecommerce", "_type": "product", "_id": "3" }}
{ "name": "zhonghua yagao" }
{ "index": { "_index": "ecommerce", "_type": "product", "_id": "2" }}
{ "name": "replaced zhonghua yagao" }
{ "update": { "_index": "ecommerce", "_type": "product", "_id": "3", "_retry_on_conflict" : 3} }
{ "doc" : {"name" : "bulk zhonghua yagao"} }
说明:
(1)delete:删除一个文档,只要1个json串就可以了
(2)create:PUT /index/type/id/_create,强制创建
(3)index:普通的put操作,可以是创建文档,也可以是全量替换文档
(4)update:执行的partial update操作
bulk api对json的语法,有严格的要求,每个json串不能换行,只能放一行,同时一个json串和一个json串之间,必须有一个换行
参考:ElasticSearch教程(龙果学院)
ElasticSearch常用搜索命令整理(长期更新...)相关推荐
- Elasticsearch的搜索命令
Elasticsearch的搜索命令 文章目录 Elasticsearch的搜索命令 数据准备 URI Search q(查询字符串) analyzer(指定查询字符串时使用的分析器) df(指定查询 ...
- linux常用基础命令整理
linux常用基础命令整理 su - 用户名 ->切换到指定用户下 ls ------>查看当前目录下的目录及文件 clear ------>清理屏幕 cd 路径 -----> ...
- C 常用函数罗列(长期更新)
C 常用函数罗列(长期更新) void *memset(void *Dst,int val,size_t size); 用来对一段内存空间全部设置为某个字符,一般用在对定义的字符串进行初始化.
- Linux 之 Linux/Ubuntu 中开发操作中常用的命令整理
Linux 之 Linux/Ubuntu 中开发操作中常用的命令整理 目录 Linux 之 Linux/Ubuntu 中开发操作中常用的命令整理 一.简单介绍 二.常用命令 1. 打开终端 :Ctrl ...
- 开发必备的常用 Linux 命令整理
在前面的文章中,截止到 微服务系列:分布式日志 ELK 搭建指南 这篇,我们终于算是将微服务系列给基本学完了,一时间难以决定接下来要写些什么东西. 想了想还是决定写几篇 Linux 相关命令的文章,毕 ...
- EC20 不常用AT 命令 整理
EC20 不常用AT 命令 OTA更新中用到了EC20的HTTP和FILE操作AT命令,网上资料比较少,看手册又耗时,所以整理了下,方便以后查看使用,避免遗忘. HTTP 操作 GET 请求 1.设置 ...
- 最全的SEO搜索命令整理
做为一名SEOER其实我们还是要多多学习一些搜引擎的知识,哪怕有的不清楚但是最起码要有个了解.今天就整理了一些很多人没有用过的一些搜索引擎命令,百度高级指令与谷歌高级指令. SEO搜索命令大全 1.双 ...
- 在linux系统环境中 常用的关机命令,Linux常用基础命令整理:关机命令、查看目录下文件命令等...
整理了一些Linux常用基础命令,欢迎指正. 首先记住四个热键,学会这四个键,收益一辈子. Tab按键---命令补齐功能 Ctrl+c按键---停掉正在运行的程序 Ctrl+d按键---相当于exit ...
- sle linux lftp禁止匿名登陆_软件测试常用linux命令整理
作为一个名软件测试工程师,掌握Linux的基本操作是必须的.下面罗列下linux的常用命令,方便大家今后操作linux时查找,然后通过[帮助命令]进行具体的使用. 1.帮助命令man -- man ...
- 一些常用的命令整理(更新ing~)
1.查询Eigen3版本 pkg-config --modversion eigen3 2.查询opencv版本号 pkg-config --modversion opencv 3.解tar.gz压缩 ...
最新文章
- CTFshow php特性 web115
- Python 常用排序Demo|冒、插、快、希等入门算法
- 阴阳师人数最多的服务器,《阴阳师》手游部分服务器合并公告
- 论:开发者信仰之“天下IT是一家“(Java .NET篇)
- consul的安装搭建
- 查看Servlet 3.0的新增功能
- qq linux版本下载官网下载,腾讯QQ For Linux
- Neville 插值方法
- dockerfile arg_解读三组容易混淆的 Dockerfile 指令
- 专用集装箱行业调研报告 - 市场现状分析与发展前景预测(2021-2027年)
- [11]2020-CVPR-State-Relabeling Adversarial Active Learning论文笔记
- 深入剖析Java类加载机制
- Java开发,表单提交中发生中文乱码的问题。
- 李宏毅:1 天搞懂深度学习,我总结了 300 页 PPT(附思维导图)
- 多功能雨伞项目计划书_雨伞策划书范文
- 什么是台式机主板的“双通道”认知误区?
- 黑马程序员————小牛皮糖学习笔记————其他对象Sytem-Runtime-Date-Math
- 【浅墨Unity3D Shader编程】之一 夏威夷篇:游戏场景的创建 第一个Shader的书写
- 微信退款关于证书的使用
- 模块-E18-D80NK红外避障传感器