zookeeper的增删改查

private CuratorFramework client;

@Before
    public void testConnect(){
        RetryPolicy retryPolicy = new ExponentialBackoffRetry(3000,10);
        client = CuratorFrameworkFactory.builder().connectString("127.0.0.1:2181")
                .sessionTimeoutMs(60 * 100)
                .connectionTimeoutMs(15 * 1000)
                .retryPolicy(retryPolicy).namespace("it").build();
        client.start();

    }



    @Test
    public void testCreate() throws Exception {
        client.create().creatingParentContainersIfNeeded().forPath("/it/app1");//同时创建父节点和子节点

        String path = client.create().forPath("/app1");
        System.out.println(path);
    }





    @Test
    public void testGet() throws Exception {
        byte[] bytes = client.getData().forPath("/app1");//当前节点信息
        System.out.println(new String(bytes));

        List<String> strings = client.getChildren().forPath("/");//查询子节点
        System.out.println(strings);

        Stat stat = new Stat();
        client.getData().storingStatIn(stat).forPath("/app1");//将节点所有信息记录到stat
        System.out.println(stat);
    }



    @Test
    public void testSet() throws Exception {
        Stat stat = new Stat();
        client.getData().storingStatIn(stat).forPath("/app1");
        int version = stat.getVersion();
        client.setData().withVersion(version).forPath("/","hhh".getBytes(StandardCharsets.UTF_8));//根据版本修改若版本不对这修改失败
    }



    @Test
    public void testDelete() throws Exception {

        client.delete().forPath("/app1");

        client.delete().deletingChildrenIfNeeded().forPath("/it");//有子节点也删除

        client.delete().guaranteed().forPath("/app1"); //guaranteed为保证被删除(反复尝试)

        //返回被删除节点信息
        client.delete().guaranteed().inBackground(new BackgroundCallback() {
            @Override
            public void processResult(CuratorFramework curatorFramework, CuratorEvent curatorEvent) throws Exception {
                System.out.println(curatorEvent);
            }
        }).forPath("/app1");
    }



 @After
    public void closer(){
        client.close();
    }

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我会尝试回答您的问题。 首先,要生成CloudSolrClient增删改查代码,需要进行以下步骤: 1. 导入所需的依赖库。 在代码中需要导入solrj库,代码如下: ```java import org.apache.solr.client.solrj.impl.CloudSolrClient; import org.apache.solr.client.solrj.impl.HttpSolrClient; import org.apache.solr.client.solrj.SolrClient; import org.apache.solr.client.solrj.SolrQuery; import org.apache.solr.client.solrj.SolrServerException; import org.apache.solr.client.solrj.response.QueryResponse; import org.apache.solr.common.SolrDocumentList; import org.apache.solr.common.params.ModifiableSolrParams; import java.io.IOException; import java.util.HashMap; import java.util.Map; ``` 2. 创建CloudSolrClient对象并设置连接参数。 初始化CloudSolrClient对象需要指定Solr地址,以及ZooKeeper的地址信息。具体代码如下: ```java Map<String, String> zkHosts = new HashMap<>(); zkHosts.put("zkHosts", "localhost:2181/solr"); CloudSolrClient cloudSolrClient = new CloudSolrClient.Builder(new ArrayList<>(zkHosts.values()), Optional.empty()).build(); //设置默认的Collection名称 cloudSolrClient.setDefaultCollection("collection_name"); ``` 3. 增加文档。 添加文档到索引需要创建SolrInputDocument对象,然后使用IndexRequest操作,如下: ```java SolrInputDocument doc = new SolrInputDocument(); doc.addField("id", "doc_id"); doc.addField("title", "doc_title"); doc.addField("content", "doc_content"); UpdateRequest addRequest = new UpdateRequest(); addRequest.add(doc); cloudSolrClient.request(addRequest); cloudSolrClient.commit(); ``` 4. 更新文档。 更新需要使用UpdateRequest对象,具体代码如下: ```java SolrInputDocument doc = new SolrInputDocument(); doc.addField("id", "doc_id"); doc.addField("title", "doc_title_updated"); UpdateRequest updateRequest = new UpdateRequest(); updateRequest.add(doc); cloudSolrClient.request(updateRequest); cloudSolrClient.commit(); ``` 5. 删除文档。 删除文档需要使用deleteByQuery或者deleteById方法,具体代码如下: ```java //使用deleteByQuery方法删除文档 DeleteRequest deleteRequest = new DeleteRequest(); deleteRequest.deleteById("doc_id"); ``` ```java //使用deleteById方法删除文档 DeleteRequest deleteRequest = new DeleteRequest(); deleteRequest.deleteByQuery("id:doc_id"); ``` 6. 查询文档。 可以使用SolrQuery对象进行查询,具体代码如下: ```java SolrQuery query = new SolrQuery(); query.setQuery("id:doc_id"); QueryResponse response = cloudSolrClient.query(query); SolrDocumentList results = response.getResults(); ``` 以上是生成CloudSolrClient增删改查代码的主要步骤。但具体实现方法还需要根据实际需求进行改进。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值