Elasticsearch [2.0] ☞ Java Client API ☞ Query DSL
来源:互联网 发布:dirt rally for mac 编辑:程序博客网 时间:2024/04/27 20:25
Query DSL
elasticsearch 提供一个使用java实现的REST Query DSL查询。查询的工厂方法是QueryBuilders。一旦你准备好了你就可以使用Search API.
import static org.elasticsearch.index.query.QueryBuilders.*;
注意 我们可以使用toString方法轻松的打印出JSON格式。
Match All Query
详见Match All Query。
QueryBuilder qb = matchAllQuery();
注意匹配所有的,其中注意参数boost因子。
Full text queries
全文查询通常需要配合analyzer(或者search_analyzer)来进行特定领域的全文搜索(例如中文分词等相关插件)
全文查询包含:
match query
标准的全文查询匹配,包含模糊匹配和短语或者近似查询。详见Match Query
QueryBuilder qb = matchQuery( "name", // 1 "kimchy elasticsearch" // 2);
- 查询字段
- 查询文本
multi_match query
多字段匹配查询,详见Multi Match Query.
QueryBuilder qb = multiMatchQuery( "kimchy elasticsearch", // 1 "user", "message" // 2);
- 搜索的文本
- 使用的字段(可以有多个)
common_terms query
更专业查询,它提供了更多的不常见查询。 详见Common Terms Query
QueryBuilder qb = commonTermsQuery("name", // 1 "kimchy"); // 2
- 查询字段
- 查询值
query_string query
支持小型的Luence查询,使用字符串语法,你可以指定 AND 或 OR 或 NOT条件和一个多条件查询的搜索。仅限于专业用户使用。
QueryBuilder qb = queryStringQuery("+kimchy -elasticsearch"); // 1
- 查询文本
simple_query_string
一个更简单的,更强大的query_string语法查询,适合直接暴露给用户。
QueryBuilder qb = simpleQueryStringQuery("+kimchy -elasticsearch"); // 1
- 查询文本
注意这里解释下上面这个查询:
意思是”一定要有kimchy并且一定不含有elasticsearch”
参照Lucene语法规则http://www.oschina.net/question/1092_560
Term level queries 精确查询
While the full text queries will analyze the query string before executing, the term-level queries operate on the exact terms that are stored in the inverted index.
精确查询往往用于像数字、日期、以及枚举类型的查询而不是全文查询。或者它们允许你在低纬度上面执行分析工作。
精确查询包括
- term query
精确查询文本中包含的内容 - terms query
在指定的多个字段的中查找包含的内容(只要任意一个字段必然含有即可) - range query
范围查询,可以指定值所在的范围(日期、数字或者字符串) - exists query
查找某个字段不为空的值(等同于SQL的IS NOT NULL) - missing query
查找字段中是不是没有值或者只包含空值。详见Missing Queryjava
QueryBuilder qb = missingQuery("user"); // 1
.existence(true) // 2
.nullValue(true); // 3- 查询的字段
- existence查找user为空的值(设置为true时候匹配为空的,当然如果不存在user字段也会匹配到)
- nullValue查找user为null的值(设置为true时候匹配为null的值)
- prefix query
查找指定的字段中是否包含查询中的前缀。详见prefix queryjava
QueryBuilder qb = prefixQuery(
"brand", //1
"heine" //2
);- 查找的字段
- 前缀内容
Wildcard Query
通配符查询,找到指定的字段中包含查找的模式。该模式支持单个字符通配符(?)和多个字符通配符(*),类似SQL中的LIKE的语法。详见 Wildcard QueryQueryBuilder qb = wildcardQuery("user", "k?mc*");
- Regexp Query
正则查询。使用正则表达进行匹配查询,正则语法详见。详见Regexp Queryjava
QueryBuilder qb = regexpQuery(
"name.first",
"s.*y"); Fuzzy Query
Find documents where the field specified contains terms which are fuzzily similar to the specified term. Fuzziness is measured as a Levenshtein edit distance of 1 or 2.
模糊查询.QueryBuilder qb = fuzzyQuery("name", "kimzhy" );
type query
按照指定的类型查询QueryBuilder qb = typeQuery("my_type");
IDs Query
按照指定的类型和IDs进行查找QueryBuilder qb = idsQuery("my_type", "type2").addIds("1", "4", "100");QueryBuilder qb = idsQuery() // 1.addIds("1", "4", "100");
- type是一个可选的。其中第一个查询表示在type为my_type和type2两个钟查找ids为1,4,100的值
Compound queries
Joining queries
Geo queries
Specialized queries
Span queries
- Elasticsearch [2.0] ☞ Java Client API ☞ Query DSL
- Elasticsearch[2.0] ☞ Java Client API
- Elasticsearch[2.0] ☞ Java Client API ☞ Percolate API
- elasticsearch DSL java api总结
- elasticsearch java query API
- elasticsearch:Query DSL
- Elasticsearch 5.4 Query DSL
- Query DSL for elasticsearch Query
- Elasticsearch java API (20)查询 DSL
- ElasticSearch的 Query DSL 和 Filter DSL
- ElasticSearch的 Query DSL 和 Filter DSL
- Elasticsearch——Query DSL
- elasticsearch-java api之client
- Elasticsearch java API (21)查询 DSL 项级别查询
- Elasticsearch java API (21)查询 DSL 复合查询
- Elasticsearch java API (22)查询 DSL Joining查询
- Elasticsearch java API (23)查询 DSL Geo查询
- Elasticsearch java API (24)查询 DSL Specialized(专业)查询
- Android性能优化之常见的内存泄漏
- IOS 实现不定参数方法
- LintCode:最多有k个不同字符的最长子字符串
- A First Look at Rust Language
- 几个小问题weblogic
- Elasticsearch [2.0] ☞ Java Client API ☞ Query DSL
- 九度 题目1055:数组逆置
- 抽象工厂模式
- Python自学笔记
- cppconvnet is on line in gitHub
- e
- NFS技术实现图片共享存储
- nginx 配置代理和虚拟目录示例
- [C++] 老鼠走迷宫(使用递回)