ElasticSearch Clients (Java)

SpringBoot项目中集成ElasticSearchClient (version = 6.1.1),该版本相对老旧,对某些api的支持并不好,有条件的可以及时更新。

6.17.8
6.1
7.8

可见差别还是挺大的。
ps:本文使用6.1.1

配置
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.elasticsearch.client.transport.TransportClient;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.common.transport.TransportAddress;
import org.elasticsearch.transport.client.PreBuiltTransportClient;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import java.net.InetAddress;
import java.net.UnknownHostException;

@Configuration
public class ElaticSearchConfig {
    @Value("${spring.data.elasticsearch.cluster-nodes}")
    private String hosts;
    @Value("${spring.data.elasticsearch.cluster-port}")
    private Integer port;
    @Value("${spring.data.elasticsearch.cluster-name}")
    private String clusterName;
    private static final Logger logger = LogManager.getLogger(ElaticSearchConfig.class);
    @Bean
    public TransportClient client() {
        Settings settings = Settings.builder()
                .put("cluster.name", clusterName)
                .build();
        TransportClient client = null;
        try {
            client = new PreBuiltTransportClient(settings)
                        .addTransportAddress(new TransportAddress(InetAddress.getByName(hosts), port));
        } catch (UnknownHostException e) {
            e.printStackTrace();
        }
        logger.info("The es client create successful" + "host = " + hosts + ",port = " + port);
        return client;
    }
}
基础操作
// insert
Map<String, Object> page = pageEntity.toMap();
IndexResponse response = client.prepareIndex(index, type, id)
                .setSource(page)
                .get();
// get
GetResponse getResponse = client.prepareGet(index, type, id).get();
// delete
DeleteResponse response = client.prepareDelete(index, type, id).get();
// 删除/添加/获取多个,都可以使用该操作
BulkRequest request = new BulkRequest();
list.forEach(item -> {
            request.add(new DeleteRequest(index, type, item.getId()));
});
client.bulk(request);
对Index操作
//create
//可以在request上追加各种信息
CreateIndexRequest request = new CreateIndexRequest("away-log"); 
CreateIndexResponse createIndexResponse = client.indices().create(request, RequestOptions.DEFAULT);
//get
GetIndexRequest request = new GetIndexRequest().indices("index"); 
GetIndexResponse getIndexResponse = client.indices().get(request, RequestOptions.DEFAULT);

// delete
//注意indexs可以是一个索引 ,也可以是索引的数组
DeleteIndexResponse response = client.admin().indices().prepareDelete(indexs).get();
//getAll
GetIndexResponse response = client.admin()
                .indices()
                .prepareGetIndex()
                .execute()
                .actionGet();
//
搜索
//查询条件
BoolQueryBuilder where = QueryBuilders.boolQuery();
//按照日期进行分组
DateHistogramAggregationBuilder agg = AggregationBuilders.dateHistogram("agg")
                //字段
                .field("time")
                //时间间隔 
                .dateHistogramInterval(dateHistogramInterval)
                //输出的时间格式
                .format(model);
//设置时区
agg.timeZone(DateTimeZone.forID("+08:00"));
//按照用户分组
AggregationBuilder user = AggregationBuilders.terms("user").field("userId").size(Integer.MAX_VALUE);
//添加到前一个分组条件
agg.subAggregation(user);
 //排序
 SortBuilder sortBuilder = SortBuilders.fieldSort("score").order(SortOrder.DESC);
 SearchResponse response = client.prepareSearch("index")
                .setQuery(where)
                //起点
                .from(i)
                //size
                .setSize(size)
                .addSort(sortBuilder)
                .addAggregation(agg)
                .get();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值