java for es新手之路

来源:互联网 发布:剑三成女脸型数据 编辑:程序博客网 时间:2024/06/03 19:29

目前用es5.3,较es2.0有很大差别,对用法记录一下。

Spingboot 只集成了es2.0的版本,没有集成5.0以上的,所以只能自己设置esClient,esClient设置有两种方式,用常用的

@Configurationpublic class EsClientConfig {@Value("${esclient.host}")private String host;@Value("${esclient.clusterName}")private String clusterName;@Value("${esclient.port}")private int port;@Bean(name = "esClient")public TransportClient esClient() {Settings settings = Settings.builder().put("cluster.name", clusterName).put("client.transport.sniff", true).build();//5.x 添加了自动嗅探功能,添加一个ip就行。TransportClient client = new PreBuiltTransportClient(settings);try {client.addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName(host), port));} catch (UnknownHostException e) {e.printStackTrace();}return client;}}

1、es查询demo

根据es查询,es2.0版本用在setType后面有setFields 设置返回字段,此处修改为setFetchSource()

@Servicepublic class EsService {    @Autowired    private TransportClient esClient;    public  List<Map<String, Object>> getEsResultByFields(String index, String type, int size, String fields){       // IdsQueryBuilder qb = QueryBuilders.idsQuery();       // 设置id qb.addIds(id);//        MultiMatchQueryBuilder multiMatchQueryBuilder = QueryBuilders.multiMatchQuery("",fields);//        SearchResponse resp = esClient.prepareSearch("ent_index").setTypes("ENT_INDEX").setSize(size).execute().actionGet();//        List<Map<String, Object>> data = new ArrayList<>();//        for (SearchHit hit : resp.getHits()) {//            Map<String, Object> map = hit.getSource();//            data.add(map);//        }        SearchResponse resp = esClient.prepareSearch(index).setTypes(type).setFetchSource(fields.split(","), null).setSize(size).execute().actionGet();        List<Map<String, Object>> data = new ArrayList<>();        for (SearchHit hit : resp.getHits()) {            data.add(hit.getSource());        }        return data;    }}


2、es聚合demo

http://blog.csdn.net/napoay/article/details/53484730

原创粉丝点击