ElasticSearch 查询小结之一
来源:互联网 发布:知乎 夏朝 编辑:程序博客网 时间:2024/06/03 18:10
1 - inline 查询
在Restful API中,连同查询参数一起,指定查询关键字:
curl -XGET 'Http://localhost:9200/ebook/book/_search?q=Elastic&prettry=true
2 - 查询 DSL
在使用Restful API检索文档的时候,使用复杂的查询条件,比如多条件查询(复合查询),更改积分权重等:
curl -XGET 'http://localhost:9200/ebook/book/_search?pretty=true' -d '{"query": {"query_string":{ "query":"title:crime"}}}
(以下查询都是基于Kibana提交,省却了curl的一系列参数设置)
2.1 - match_all:
不适用任何索引关键字,查询所有的文档,类似于sql的select *
GET 'ebooks/POST/_search'{ "query":{ "match_all":{} }}
2.2 - term query :
GET ebooks/POST/_search{ "query":{ "term":{ "content":"fire" } }}
下面这个查询,要注意大小写。假如redemption首字大写,那么就会查询不到。而原文中,首字是大写的。初步判断是因为在查询的时候,没有指定一个合适的analyser.
GET ebooks/POST/_search{ "query":{ "term":{ "content":"redemption" } }}
以下查询,首字大写,并没有查获任何的匹配文档。
GET ebooks/POST/_search{ "query":{ "term":{ "content":"Redemption" } }}
尝试着给查询字段增加一个analyzer:
GET ebooks/POST/_search{ "query":{ "term":{ "content":{ "value":"Redemption", "analyzer":"simple" } } }}
报错:
{ "error": { "root_cause": [ { "type": "parsing_exception", "reason": "[term] query does not support [analyzer]", "line": 6, "col": 20 } ], "type": "parsing_exception", "reason": "[term] query does not support [analyzer]", "line": 6, "col": 20 }, "status": 400}
term是词干的意思,就是已经被提炼和分析过的原生字,可以想象成为原子级别的查询。在term query里面,不需要再做任何的分析,就只能是全字符串匹配。所以碰到这种情况,需要使用分析器的例子,就要使用match查询:
GET ebooks/POST/_search{ "query":{ "match":{ "content":"Redemption" } } }}
2.3 boolean query:
boolean查询,条件组合查询。当有多个条件表达式组合时候,可以组合起来判别最终的条件:
,"should":[ {"match":{"content":"redemption"}} ,{"match":{"content":"there"}} ]
下面两段脚本,如果没有指定should的minimum_number_should_match,则结果是一样的:
must是在should应用之后,再执行:表示一定要符合的条件; 而should可以根据其中一或者多个匹配表达式,来查找文档的;
GET ebooks/POST/_search { "query":{ "bool":{ "must":[{"match":{"content":"there"}} ,{"match":{"content":"redemption"}}] ,"should":[ {"match":{"content":"redemption"}} ,{"match":{"content":"there"}} ] } }}
GET ebooks/POST/_search { "query":{ "bool":{ "must":[{"match":{"content":"there"}} ,{"match":{"content":"redemption"}}] } }}
除了使用must,还可以使用boolean的minimum_number_should_match
GET ebooks/POST/_search { "query":{ "bool":{ "must":[{"match":{"content":"there"}} ,{"match":{"content":"redemption"}}] ,"should":[ {"match":{"content":"redemption"}} ,{"match":{"content":"there"}} ] } }}
2.4 wildcard query
, ? 是两个在查询条件中使用的通配符。 代表了多个字符通配,?仅仅代表一个通配字符
GET ebooks/POST/_search { "query":{ "wildcard":{ "content":{"value":"langol*"} } }}
没有想到的是,bool和wildcard能够联合成符合查询。
GET ebooks/POST/_search { "query":{ "bool":{ "must_not":{"wildcard":{ "content":"langol*" }} } }}
2.5 range query
GET ebook/book/_search{ "query":{ "range":{ "charpter":{ "gte":0 ,"lte":5 } } }}
- ElasticSearch 查询小结之一
- elasticsearch-查询
- Elasticsearch查询
- Elasticsearch查询
- ElasticSearch查询
- Elasticsearch 查询
- Elasticsearch入门教程之一--基本概念
- Elasticsearch查询配置(Elasticsearch+springboot)
- solr和elasticsearch小结
- Elasticsearch mappings小结
- ElasticSearch使用小结
- Elasticsearch- 分词查询
- Elasticsearch- 集群状态查询
- elasticsearch-查询基础篇
- elasticsearch 查询问题
- elasticsearch moreLikeThis查询应用
- ElasticSearch查询字符串
- ElasticSearch结构化查询
- abbr:HTML5中缩略词标记的重要作用
- IO多路复用
- C++ 逻辑运算符和逻辑表达式
- 树的统计Count 树剖模板
- 状态同步模式下的游戏掉线重连
- ElasticSearch 查询小结之一
- iOS 数组的排序(升序、降序、乱序)
- Swift中的struct与class
- 利用断点流实现继续下载(实际就是利用断点流seek()方法)
- 动态数码管显示
- BZOJ 4503: 两个串 FFT 通配符匹配
- 哲学家用餐模型分析
- UDP组播
- 距离秋招还有一个月了