ElasticSearch SearchApi总结

参考:https://blog.csdn.net/majun_guang/article/details/81103623

整理:

Client

package com.mobile.es;
import java.net.InetAddress;
import org.elasticsearch.client.transport.TransportClient;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.common.transport.TransportAddress;
import org.elasticsearch.transport.client.PreBuiltTransportClient;

public class ElasticCil {

    public final static String HOST = "localhost";
    // http请求的端口是9200,客户端是9300
    public final static int PORT = 9300;

    /**
     * getConnection:(获取es连接).
     * @return
     * @throws Exception
     */
    @SuppressWarnings({"resource", "unchecked"})
    public static TransportClient getConnection() throws Exception {
        // 设置集群名称
        Settings settings = Settings.builder().put("cluster.name", "elasticsearch").build();
        // 创建client
        TransportClient client = new PreBuiltTransportClient(settings).addTransportAddresses(new TransportAddress(InetAddress.getByName(HOST), PORT));
//        client.close();
        return client;
    }

    public static void main(String[] args) throws Exception {
        TransportClient client = getConnection();
        System.out.println("client==" + client.toString());
        System.out.println(client.prepareGet().execute().actionGet().getVersion());
        client.close();
    }
}

Search

package com.mobile.es;

import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.client.transport.TransportClient;
import org.elasticsearch.index.query.*;
import org.elasticsearch.search.aggregations.AbstractAggregationBuilder;
import org.elasticsearch.search.aggregations.AggregationBuilder;
import org.elasticsearch.search.aggregations.AggregationBuilders;
import org.elasticsearch.search.aggregations.bucket.terms.TermsAggregationBuilder;
import org.elasticsearch.search.sort.SortBuilder;
import org.elasticsearch.search.sort.SortBuilders;
import org.elasticsearch.search.sort.SortOrder;

public class SearchDemo {
    public static void main(String args[]) throws Exception {
        TransportClient client = ElasticCil.getConnection();
        // select * from
        QueryBuilder qb = new MatchAllQueryBuilder();
        //QueryBuilders
        TermQueryBuilder tq1 = QueryBuilders.termQuery("floorId",new int[]{3,4});
        TermQueryBuilder tq2 = QueryBuilders.termQuery("shopName",new String[]{"优衣库"});
        //大于 大于等于  小于 小于等于
        RangeQueryBuilder rangeQueryBuilder = QueryBuilders.rangeQuery("s1apId").gte(1000);
        QueryBuilder like = QueryBuilders.wildcardQuery("user", "k*hy17*");
        //where floorId in (3,4) or shopName = "优衣库" and s1apId > 1000
        BoolQueryBuilder bqb =  QueryBuilders.boolQuery().must(rangeQueryBuilder).must(tq1).should(tq2).must(like);
        //group by age count avg sum max min

        AggregationBuilder  grouopby = AggregationBuilders.terms("by_age").field("age");
        //多分组 group by age ,gender
        TermsAggregationBuilder all = AggregationBuilders.terms("by_gender").field("gender");

        AbstractAggregationBuilder ab = all.subAggregation(grouopby);

        AggregationBuilder count = AggregationBuilders.count("ageCount").field("age");

        AggregationBuilder count1 =  ab.subAggregation(count);
        //Stats valueCount= response.getAggregations().get("stats");
        //logger.log(Level.INFO,"max"+valueCount.getMaxAsString());
        //logger.log(Level.INFO,"avg"+valueCount.getAvgAsString());
        //logger.log(Level.INFO,"sum"+valueCount.getSumAsString());
        //logger.log(Level.INFO,"min"+valueCount.getMinAsString());
        //logger.log(Level.INFO,"count"+valueCount.getCount());
        AggregationBuilder  status = AggregationBuilders.stats("stats").field("age");

        //order by
        SortBuilder sortBuilder= SortBuilders.fieldSort("floorId");
        sortBuilder.order(SortOrder.DESC);

        //limit 100
        SearchResponse response = client
                .prepareSearch("accounts")
                .setTypes("person")
                //select * from and or in like
                .setQuery(bqb)
                //group by
                .addAggregation(status)
                //order by
                .addSort(sortBuilder)
                .setFrom(0)
                .setSize(100)
                .get();
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值