ES-Elasticsearch

本文详细介绍了如何使用Java创建Elasticsearch客户端,包括设置集群信息、创建索引、添加和查询数据,以及批量操作和数据删除的方法。通过具体代码示例,读者可以快速掌握Elasticsearch的基本操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Es-settings创建

private TransportClient client;
	@Bean
	public Client init() {
			// 设置集群的名字
			Settings settings = Settings.builder().put("client.transport.sniff", false).put("cluster.name", clusterName)
					.build();
			// 创建集群client并添加集群节点地址
			client = new PreBuiltTransportClient(settings);
			try {
				client.addTransportAddress(
						new InetSocketTransportAddress(InetAddress.getByName(clusterIp), clusterPort));
			} catch (UnknownHostException e) {
				logger.error(e.getMessage());
			}
		return client;
}
//

 使用client 直接注入client ;创建索引、添加数据

@Autowired
 private Client client;

IndicesAdminClient c = client.admin().indices();
	 c.prepareExists(index).get().isExists()  //是否存在index名称的索引
	 c.typesExists(new TypesExistsRequest(new String[] { index },type)).actionGet().isExists(); //是否存在index索引下的type类型

//这里如果不先判断所引的存在 会报 no index such 异常信息

//如果不存在 可以创建
c.prepareCreate(index).execute().actionGet();

//也可以直接创建并添加数据
// index-索引;type-类型;id -数据主键 o为map类型的key-value 数据
c.prepareIndex(index, type,id).setSource(o).execute().actionGet();

	

es中索引及数据的删除操作

// 删除指定type(tabName) 下的所有数据
DeleteByQueryRequestBuilder rr=DeleteByQueryAction.INSTANCE.newRequestBuilder(client);
BulkByScrollResponse rps=  rr.filter(QueryBuilders.typeQuery(tabName)).source(systemName).get();
// 如要删除指定id 将filter 条件换为  .filter(QueryBuilders.termsQuery("_id", idss));
// 该处需要注意的是删除指定type下的ids集合数据 暂时没有提供具体的api;或许个人并没有发现
//需特殊处理::: 循环赋值id并执行 
 DeleteRequestBuilder db= client.prepareDelete();
 			    db.setIndex(systemName).setType(col);
 			    db.setId(tabName+"d").get();db.setId(tabName+"e").get();
// 删除索引下的所有数据 需将条件替换为

.filter(QueryBuilders.matechall...);//可以试试

//删除索引
DeleteIndexRequest deleteIndexRequest = new DeleteIndexRequest(index);
			ActionFuture<DeleteIndexResponse> response = 
					client.admin().indices().delete(deleteIndexRequest);
 //或者直接:
 client.admin().indices().prepareDelete(systemName).get()		   			   

es 查询 

// col 列名称; ids 集合主键
QueryBuilder qb = QueryBuilders.termsQuery(col, ids);
//设置查询index、type
SearchRequestBuilder requestBuilder = client.prepareSearch(systemName).setTypes(tabName).setSearchType(SearchType.DFS_QUERY_THEN_FETCH);  
//设置查询条件qb 并执行
requestBuilder.setQuery(qb).get();
				

es 数据的批量增加、更新操作 

// 创建批量提交; 单次增加json格式数据并提交
BulkRequestBuilder bulkRequest = client.prepareBulk();
bulkRequest.add(client.prepareIndex(index, type, id).setSource(json)).get();

统计字段出现次数:

{
  "query": {
    "wildcard": {
      "name.keyword": "*不等边角钢*"
    }
  },
  "aggs": {
    "data": {
      "terms": {
        "field": "name.keyword"
      }
    }
  }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值