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

ElasticSearch 查询语法的更多相关文章

  1. elasticsearch基本概念与查询语法

    序言 后面有大量类似于mysql的sum, group by查询 elk === elk总体架构 https://www.elastic.co/cn/products Beat 基于go语言写的轻量型 ...

  2. Func<T,T>应用之Elasticsearch查询语句构造器的开发

    前言 之前项目中做Elasticsearch相关开发的时候,虽然借助了第三方的组件PlainElastic.Net,但是由于当时不熟悉用法,而选择了自己拼接查询语句.例如: string queryG ...

  3. Elasticsearch Kibana查询语法

    Elasticsearch Kibana查询语法 2018年06月03日 23:52:30 wangpei1949 阅读数:3992   Elasticsearch Kibana Discover的搜 ...

  4. ES 07 - Elasticsearch查询文档的六种方法

    目录 1 Query String Search(查询串检索) 2 Query DSL(ES特定语法检索) 3 Query Filter(过滤检索) 4 Full Text Search(全文检索) ...

  5. elasticsearch查询语句

    1,安装es 安装java环境 # java --versionjava version "1.8.0_65" Java(TM) SE Runtime Environment (b ...

  6. elasticsearch查询语句总结

    query 和  filter 的区别请看:https://www.cnblogs.com/bainianminguo/articles/10396956.html Filter DSL term 过 ...

  7. query_string查询支持全部的Apache Lucene查询语法 低频词划分依据 模糊查询 Disjunction Max

    3.3 基本查询3.3.1词条查询 词条查询是未经分析的,要跟索引文档中的词条完全匹配注意:在输入数据中,title字段含有Crime and Punishment,但我们使用小写开头的crime来搜 ...

  8. python连接 elasticsearch 查询数据,支持分页

    使用python连接es并执行最基本的查询 from elasticsearch import Elasticsearch es = Elasticsearch(["localhost:92 ...

  9. Filter DSL 常用语法 -- 基本查询语法,必会

    转发自:https://www.cnblogs.com/ghj1976/p/5293250.html term 过滤 term主要用于精确匹配哪些值,比如数字,日期,布尔值或 not_analyzed ...

随机推荐

  1. CodeForces484A——Bits(贪心算法)

    Bits Let's denote as the number of bits set ('1' bits) in the binary representation of the non-negat ...

  2. Java动手实验及课后程序

    课后作业 一.编写程序,消息框显示计算结果 设计思想:导入Scanner包,使用JOptionPane类来实现消息框的输入和结果的显示. 程序代码: package com; import java. ...

  3. 《c程序设计语言》读书笔记--字符串复制

    #include <stdio.h> #define MAXLINE 10 int getLine(char s[], int lim); void copy(char to[], cha ...

  4. JAVA 方法或者类的注释快捷键

    JAVA 方法或者类的注释快捷键 /*** 登录验证* @param 传入的* @return* @throws Exception*/这种注释效果 方法: 1.先敲“/”在敲两个**,然后回车 方法 ...

  5. php关于return的关键字

    使用return关键字可以使函数返回值,可以返回包括数组和对象的任意类型,如果省略了 return,则默认返回值为 NULL. function add($a) { return $a+1; } $b ...

  6. 在win8中如何实现下拉刷新的功能

      现在我以listview为例来讲述下拉刷新的功能! 在xaml中设置listview一定要设置一个这样的属性,IsSwipeEnabled=false,然后再listview控件的前面要布局下拉刷 ...

  7. 【Python】如何安装easy_install?

    [Python]如何安装easy_install? http://jingyan.baidu.com/article/b907e627e78fe146e7891c25.html easy_instal ...

  8. LA 4255 (拓扑排序 并查集) Guess

    设这个序列的前缀和为Si(0 <= i <= n),S0 = 0 每一个符号对应两个前缀和的大小关系,然后根据这个关系拓扑排序一下. 还要注意一下前缀和相等的情况,所以用一个并查集来查询. ...

  9. hdu 4647 Another Graph Game

    题意: 有N个点,M条边. 点有权值, 边有权值. Alice, Bob 分别选点. 如果一条边的两个顶点被同一个人选了, 那么能获得该权值.问 Alice - Bob? 链接:http://acm. ...

  10. 设置app的状态栏样式

    http://www.jianshu.com/p/9f7f3fa624e7 http://cocoa.venj.me/blog/view-controller-based-status-bar-sty ...