elasticsearch 分布式搜索系列专栏:http://blog.youkuaiyun.com/xiaohulunb/article/category/2399789
内容涉及代码GitHub地址: 点击打开链接
官方API:http://www.elasticsearch.org/guide/en/elasticsearch/client/java-api/current/query-dsl-queries.html
@NotSolved未解决
- package com.elasticsearch;
- import org.elasticsearch.action.ActionListener;
- import org.elasticsearch.action.search.SearchResponse;
- import org.elasticsearch.index.query.IndicesQueryBuilder;
- import org.elasticsearch.index.query.QueryBuilder;
- import org.elasticsearch.index.query.QueryBuilders;
- /**
- * Created by lw on 14-7-15.
- * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- * elasticsearch以提供了一个完整的Java查询dsl其余查询dsl。
- * QueryBuilders工厂构建
- * API:
- * <a>http://www.elasticsearch.org/guide/en/elasticsearch/client/java-api/current/query-dsl-queries.html</a>
- * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- */
- public class Es_QueryBuilders_DSL {
- /**
- * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- * match query 单个匹配
- * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- */
- protected static QueryBuilder matchQuery() {
- return QueryBuilders.matchQuery("name", "葫芦4032娃");
- }
- /**
- * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- * multimatch query
- * 创建一个匹配查询的布尔型提供字段名称和文本。
- * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- */
- protected static QueryBuilder multiMatchQuery() {
- //现住址和家乡在【山西省太原市7429街道】的人
- return QueryBuilders.multiMatchQuery(
- "山西省太原市7429街道", // Text you are looking for
- "home", "now_home" // Fields you query on
- );
- }
- /**
- * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- * boolean query and 条件组合查询
- * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- */
- protected static QueryBuilder booleanQuery() {
- return QueryBuilders
- .boolQuery()
- .must(QueryBuilders.termQuery("name", "葫芦3033娃"))
- .must(QueryBuilders.termQuery("home", "山西省太原市7967街道"))
- .mustNot(QueryBuilders.termQuery("isRealMen", false))
- .should(QueryBuilders.termQuery("now_home", "山西省太原市"));
- }
- /**
- * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- * ids query
- * 构造一个只会匹配的特定数据 id 的查询。
- * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- */
- protected static QueryBuilder idsQuery() {
- return QueryBuilders.idsQuery().ids("CHszwWRURyK08j01p0Mmug", "ojGrYKMEQCCPvh75lHJm3A");
- }
- /**
- * TODO NotSolved
- * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- * constant score query
- * 另一个查询和查询,包裹查询只返回一个常数分数等于提高每个文档的查询。
- * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- */
- protected static QueryBuilder constantScoreQuery() {
- /*return // Using with Filters
- QueryBuilders.constantScoreQuery(FilterBuilders.termFilter("name", "kimchy"))
- .boost(2.0f);*/
- // With Queries
- return QueryBuilders.constantScoreQuery(QueryBuilders.termQuery("name", "葫芦3033娃"))
- .boost(2.0f);
- }
- /**
- * TODO NotSolved
- * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- * disjunction max query
- * 一个生成的子查询文件产生的联合查询,
- * 而且每个分数的文件具有最高得分文件的任何子查询产生的,
- * 再加上打破平手的增加任何额外的匹配的子查询。
- * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- */
- protected static QueryBuilder disMaxQuery() {
- return QueryBuilders.disMaxQuery()
- .add(QueryBuilders.termQuery("name", "kimchy")) // Your queries
- .add(QueryBuilders.termQuery("name", "elasticsearch")) // Your queries
- .boost(1.2f)
- .tieBreaker(0.7f);
- }
- /**
- * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- * fuzzy query
- * 使用模糊查询匹配文档查询。
- * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- */
- protected static QueryBuilder fuzzyQuery() {
- return QueryBuilders.fuzzyQuery("name", "葫芦3582");
- }
- /**
- * TODO NotSolved
- * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- * has child / has parent
- * 父或者子的文档查询
- * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- */
- protected static QueryBuilder hasChildQuery() {
- return // Has Child
- QueryBuilders.hasChildQuery("blog_tag",
- QueryBuilders.termQuery("tag", "something"));
- // Has Parent
- /*return QueryBuilders.hasParentQuery("blog",
- QueryBuilders.termQuery("tag","something"));*/
- }
- /**
- * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- * matchall query
- * 查询匹配所有文件。
- * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- */
- protected static QueryBuilder matchAllQuery() {
- return QueryBuilders.matchAllQuery();
- }
- /**
- * TODO NotSolved
- * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- * more like this (field) query (mlt and mlt_field)
- * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~