• 基础入门版

    • 快速检查集群的健康状况
    • 快速查看集群中有哪些索引
    • 索引的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常用搜索命令整理(长期更新...)相关推荐

  1. Elasticsearch的搜索命令

    Elasticsearch的搜索命令 文章目录 Elasticsearch的搜索命令 数据准备 URI Search q(查询字符串) analyzer(指定查询字符串时使用的分析器) df(指定查询 ...

  2. linux常用基础命令整理

    linux常用基础命令整理 su - 用户名 ->切换到指定用户下 ls ------>查看当前目录下的目录及文件 clear ------>清理屏幕 cd 路径 -----> ...

  3. C 常用函数罗列(长期更新)

    C 常用函数罗列(长期更新) void *memset(void *Dst,int val,size_t size); 用来对一段内存空间全部设置为某个字符,一般用在对定义的字符串进行初始化.

  4. Linux 之 Linux/Ubuntu 中开发操作中常用的命令整理

    Linux 之 Linux/Ubuntu 中开发操作中常用的命令整理 目录 Linux 之 Linux/Ubuntu 中开发操作中常用的命令整理 一.简单介绍 二.常用命令 1. 打开终端 :Ctrl ...

  5. 开发必备的常用 Linux 命令整理

    在前面的文章中,截止到 微服务系列:分布式日志 ELK 搭建指南 这篇,我们终于算是将微服务系列给基本学完了,一时间难以决定接下来要写些什么东西. 想了想还是决定写几篇 Linux 相关命令的文章,毕 ...

  6. EC20 不常用AT 命令 整理

    EC20 不常用AT 命令 OTA更新中用到了EC20的HTTP和FILE操作AT命令,网上资料比较少,看手册又耗时,所以整理了下,方便以后查看使用,避免遗忘. HTTP 操作 GET 请求 1.设置 ...

  7. 最全的SEO搜索命令整理

    做为一名SEOER其实我们还是要多多学习一些搜引擎的知识,哪怕有的不清楚但是最起码要有个了解.今天就整理了一些很多人没有用过的一些搜索引擎命令,百度高级指令与谷歌高级指令. SEO搜索命令大全 1.双 ...

  8. 在linux系统环境中 常用的关机命令,Linux常用基础命令整理:关机命令、查看目录下文件命令等...

    整理了一些Linux常用基础命令,欢迎指正. 首先记住四个热键,学会这四个键,收益一辈子. Tab按键---命令补齐功能 Ctrl+c按键---停掉正在运行的程序 Ctrl+d按键---相当于exit ...

  9. sle linux lftp禁止匿名登陆_软件测试常用linux命令整理

    作为一个名软件测试工程师,掌握Linux的基本操作是必须的.下面罗列下linux的常用命令,方便大家今后操作linux时查找,然后通过[帮助命令]进行具体的使用. 1.帮助命令man  --  man ...

  10. 一些常用的命令整理(更新ing~)

    1.查询Eigen3版本 pkg-config --modversion eigen3 2.查询opencv版本号 pkg-config --modversion opencv 3.解tar.gz压缩 ...

最新文章

  1. CTFshow php特性 web115
  2. Python 常用排序Demo|冒、插、快、希等入门算法
  3. 阴阳师人数最多的服务器,《阴阳师》手游部分服务器合并公告
  4. 论:开发者信仰之“天下IT是一家“(Java .NET篇)
  5. consul的安装搭建
  6. 查看Servlet 3.0的新增功能
  7. qq linux版本下载官网下载,腾讯QQ For Linux
  8. Neville 插值方法
  9. dockerfile arg_解读三组容易混淆的 Dockerfile 指令
  10. 专用集装箱行业调研报告 - 市场现状分析与发展前景预测(2021-2027年)
  11. [11]2020-CVPR-State-Relabeling Adversarial Active Learning论文笔记
  12. 深入剖析Java类加载机制
  13. Java开发,表单提交中发生中文乱码的问题。
  14. 李宏毅:1 天搞懂深度学习,我总结了 300 页 PPT(附思维导图)
  15. 多功能雨伞项目计划书_雨伞策划书范文
  16. 什么是台式机主板的“双通道”认知误区?
  17. 黑马程序员————小牛皮糖学习笔记————其他对象Sytem-Runtime-Date-Math
  18. 【浅墨Unity3D Shader编程】之一 夏威夷篇:游戏场景的创建 第一个Shader的书写
  19. 微信退款关于证书的使用
  20. 模块-E18-D80NK红外避障传感器

热门文章

  1. 梦想贩卖机v2-1.069
  2. python中快速验证输入的是否为回文
  3. Apple Pay支付流程详解
  4. 计算机基础知识——二进制
  5. 8.6 百度首页编写-导航栏
  6. wxPython下载安装教程
  7. 学计算机的怎么防辐射,电脑机箱如何防辐射----给大家科普一下
  8. allure趋势图无数据
  9. matlab newton插值法,matlab中newton插值法
  10. 福州大学计算机学院奖学金,福州大学最新学院奖学金评定标准