ElasticSearch常用搜索命令整理(长期更新...)
2018-02-17 23:33
483 查看
基础入门版
快速检查集群的健康状况
快速查看集群中有哪些索引
索引的CRUD操作以商品为例
新增商品建立索引
查询商品参见查询专题详解
修改商品name
删除商品
查询专题版
query string search不常用
query DSLDomain Specified Language特定领域的语言
query filter
full-text search全文检索
phrase search短语搜索
highlight search高亮搜索结果
批量操作
批量查询mget
批量操作bulk
说明:如何快速了解集群的健康状况?green、yellow、red?
green:每个索引的primary shard和replica shard都是active状态的
yellow:每个索引的primary shard都是active状态的,但是部分replica shard不是active状态,处于不可用的状态
red:不是所有索引的primary shard都是active状态的,部分索引有数据丢失了
说明:若已经有/ecommerce/product/1该数据,此时“新增”操作变成“全量替换”,旧数据被deleted。因此如果我们要需要创建,而不允许替换数据(逻辑:若已经有该条数据,则不进行任何操作(报错回滚))
(2)自动生成document id(自动生成的id,长度为20个字符,URL安全,base64编码,GUID,分布式系统并行生成时不可能会发生冲突)
部分修改:
说明:不会理解物理删除,只会将其标记为deleted,当数据越来越多的时候,在后台自动删除
查询结果部分字段说明:
took:耗费了几毫秒。
timed_out:是否超时,这里是没有。
_shards:数据拆成了5个分片,所以对于搜索请求,会打到所有的primary shard(或者是它的某个replica shard也可以)。
hits.total:查询结果的数量,3个document。
hits.max_score:score的含义,就是document对于一个search的相关度的匹配分数,越相关,就越匹配,分数也高。
hits.hits:包含了匹配搜索的document的详细数据。
2、搜索商品名称中包含yagao的商品,而且按照售价降序排序
3、指定要查询出来商品的名称和价格
2、查询名称包含yagao的商品,同时按照价格降序排序(sort)
3、分页查询商品(from,size)
例如:总共3条商品,假设每页就显示1条商品,现在显示第2页,所以就查出来第2个商品
4、指定要查询出来商品的名称和价格(source)
5、查询name和desc都含yagao的商品(multi_match)
6、查询价格大于等于30的商品(range)
7、查询name是yagao的商品(term 或者 terms数组指定多个)
说明:不常用。若想用term查询,则被查询的字段需要定义为不分词。
说明:bool 多条件查询,含以下参数:
must:返回的doc必须满足must子句的条件,并且参与计算score
must_not:返回的文档必须不满足must_not定义的条件
should:返回的文档可能满足should子句的条件。在一个Bool查询中,如果没有must或者filter,有一个或者多个should子句,那么只要满足一个就可以返回。minimum_should_match参数定义了至少满足几个子句。
filter:返回的doc必须满足filter子句的条件,不参与计算sorce
phrase search,要求输入的搜索串,必须在指定的字段文本中,完全包含一模一样的,才可以算匹配,才能作为结果返回。
1、删除id为1的商品
2、创建id为3的商品(name为“zhonghua yagao”)
3、修改商品2的name为“replaced zhonghua yagao”(采用全量替换的方式)
4、修改商品3的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教程(龙果学院)
快速检查集群的健康状况
快速查看集群中有哪些索引
索引的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常用分析命令整理(长期更新...)
- Git 常用命令整理(持续更新)
- 使用 Code-Push 热更新 ReactNative 常用命令整理
- VisualStudio-常用快捷键-修改用搜索名称--长期更新
- Elasticsearch常用命令整理
- 一些常用命令/快捷键的整理[更新于2014.5]
- 【安全工具】namp扫描常用命令整理(不定期更新)
- ElasticSearch搜索常用命令
- linux 常用命令整理(持续更新)
- ubuntu常用命令(长期更新)
- Linux常用命令整理<学习笔记随时更新>
- saltstack常用的命令组合整理(持续更新中....)
- 转载---Shell常用命令及特殊符号整理---->持续更新中...
- linux(Ubuntu)常用命令整理 -- 基础篇 -- 持续更新
- Linux Red hat 5.4常用命令整理(个人发布,持续更新)
- 常用命令(长期更新)
- [置顶] python常用命令汇总(长期更新)
- Linux 常用易忘操作命令整理汇总(持续收集更新...)
- 常用的saltstack命令组合整理(持续更新中....)