ElasticSearch是基于lucene的开源搜索引擎,它的查询语法关键字跟lucene一样,如下:
- 分页:from/size
- 字段:fields
- 排序:sort
- 查询:query
- 过滤:filter
- 高亮:highlight
- 统计:facet
参考资料:
http://blog.csdn.net/lgnlgn/article/details/8053626
查询:query
对于每个查询项,我们可以通过must、should、mustNot方法对QueryBuilder进行组合,形成多条件查询。(must=>and,should=>or)
Lucene支持基于词条的TermQuery、RangeQuery、PrefixQuery、BolleanQuery、PhraseQuery、WildcardQuery、FuzzyQuery
1.TermQuery与QueryParser
单个单词作为查询表达式时,它相当于一个单独的项。如果表达式是由单个单词构成,QueryParser的parse()方法会返回一个TermQuery对象。
如查询表达式为:content:hello,QueryParser会返回一个域为content,值为hello的TermQuery。
Query query = new TermQuery(“content”, “hello”).
2.RangeQuery与QueryParser
QueryParse可以使用[起始TO 终止]或{起始TO 终止}表达式来构造RangeQuery。
如查询表达式为:time:[20101010 TO 20101210] ,QueryParser会返回一个域为time,下限为20101010,上限为20101210的RangeQuery。
Term t1 = new Term(“time”, “20101010”);
Term t2 = new Term(“time”, “20101210”);
Query query = new RangeQuery(t1, t2, true);
3.PrefixQuery与QueryParser
当查询表达式中短语以星号(*)结尾时,QueryParser会创建一个PrefixQuery对象。
如查询表达式为:content:luc*,则QueryParser会返回一个域为content,值为luc的PrefixQuery.
Query query = new PrefixQuery(luc);
4.BooleanQuery与QueryParser
当查询表达式中包含多个项时,QueryParser可以方便的构建BooleanQuery。QueryParser使用圆括号分组,通过-,+,AND, OR及NOT来指定所生成的Boolean Query。
5.PhraseQuery与QueryParser
在QueryParser的分析表达式中双引号的若干项会被转换为一个PhraseQuery对象,默认情况下,Slop因子为0,可以在表达式中通过~n来指定slop因子的值。
如查询表达式为content:“hello world”~3,则QueryParser会返回一个域为content,内容为“hello world”,slop为3的短语查询。
Query query = new PhraseQuery();
query.setSlop(3);
query.add(new Term(“content”, “hello”);
query.add(new Term(“content”, “world”);
6. Wildcard与QueryParser
Lucene使用两个标准的通配符号,*代表0或多个字母,?代表0或1个字母。但查询表达式中包含*或?时,则QueryParser会返回一个WildcardQuery对象。但要注意的是,当*出现在查询表达式的末尾时,会被优化为PrefixQuery;并且查询表达式的首个字符不能是通配符,防止用户输入以通配符*为前缀的搜索表达式,导致lucene枚举所有的项而耗费巨大的资源。
6.FuzzyQuery和QueryParser
QueryParser通过在某个项之后添加“~”来支持FuzzyQuery类的模糊查询。
参考:
http://wenku.baidu.com/view/3c90138283d049649b66588c.html
http://wenku.baidu.com/view/3f8161d949649b6648d7470b.html
http://www.tuicool.com/articles/zq6B3ae
相关推荐
es常用查询语法
在这篇资源中,我们将详细介绍如何使用DSL...最后,我们将分享一些实用技巧和最佳实践,帮助您充分发挥DSL在Elasticsearch中的优势。我们将探讨性能优化、查询调试和索引优化等关键主题,以提升查询效率和搜索准确性。
ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的...该Demo包含了大部分的java应用ES语法....
sqltoes(从SQL到ES)编写Elasticsearch命令很困难,编写SQL查询则很简单... 动机:Elasticsearch命令在特定点上。 请参阅Elasticsearch以获取更多帮助。安装npm install sqltoes用var sqltoes = require ( 'sqltoes...
es学习总结 脑图。需要提前下载Mindjet MindManager 9
Elasticsearch 是一个开源的高度可扩展的全文搜索和分析引擎,拥有查询近实时的超强性能。 大名鼎鼎的Lucene 搜索引擎被广泛用于搜索领域,但是操作复杂繁琐,总是让开发者敬而远之。而 Elasticsearch将 Lucene 作为...
Elasticsearch 基础语法 增删改查聚合 配置结构化数据 postman,下载后直接导入 postman 即可
私人笔记帮助初学Es的朋友们快速掌握esDSL语法,kibana,es安装和基本特性。有兴趣的小伙伴可以下载
Elasticsearch知识,倒排索引,基本语法,Java操作ES
ElasticSearch是一个基于Lucene的搜索服务器。...10_Elasticsearch 基本查询 11_Elasticsearch filter查询 12_Elasticsearch 组合查询 13_Logstash 介绍以及初步安装 14_Logstash 配置语法以及插件
1.创建索引 #创建索引,指定id建立索引 PUT /employee/_doc/1 { name: 凯杰, age: 30 } 2.删除索引 #删除索引 ...查询索引名为 /employee 的索引 _search 表示查询全部 GET /employee/_search 5.
Laravel开发-elasticsearch Laravel和Lumen ElasticSearch查询生成器,使用优雅的语法构建复杂的查询
elasticsearch权威指南,介绍elasticsearch语法,中文翻译。
该资源包括elasticsearch的压缩包、kibana的压缩包、elasticsearch-head安装文档,可以说一整套的资源,下载即用,下载即可实战elasticsearch的语法
笔记中记录了Es的基本查询语句以及查询结果,记录下来只为自己备忘,不作为技术参考,请勿话时间阅读。。。。
人大金仓 KingbaseES V8 手册 及 sql语法手册
丰富的查询功能:Elasticsearch 提供了丰富的查询语法和功能,包括全文搜索、精确匹配、范围查询、聚合等。 强大的聚合功能:Elasticsearch 支持各种聚合操作,能够对数据进行统计、分析和汇总。 易于扩展:...
Elasticsearch-SQL社区开发插件,我们常用的 SQL 查询 Elasticsearch,语法跟关系型数据库的 sql 语句有相似之处。
JavaScript --- ES6 涵盖(ES6 -- ES11)语法学习