• 关于Solr6.0中solrj使用简单例子


    solr6.0的solrJ接口有部分变化,下面列出了简单的使用实例,有需要的朋友可以参考下。

    package com.ailk.solr6;
    
    import java.io.IOException;
    import java.util.ArrayList;
    import java.util.Collection;
    import java.util.HashMap;
    import java.util.List;
    import java.util.UUID;
    
    //import org.apache.log4j.Logger;
    //import org.apache.log4j.PropertyConfigurator;
    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.impl.CloudSolrClient;
    import org.apache.solr.client.solrj.impl.HttpSolrClient;
    import org.apache.solr.client.solrj.request.UpdateRequest;
    import org.apache.solr.client.solrj.response.QueryResponse;
    import org.apache.solr.client.solrj.response.UpdateResponse;
    import org.apache.solr.common.SolrDocument;
    import org.apache.solr.common.SolrDocumentList;
    import org.apache.solr.common.SolrInputDocument;
    
    public class SimpleSorl {
        private String solrUrl;
        private SolrClient client;
        private int num = 10;
        private String zkUrl;
        private String collectionName;
    
        private SolrClient createNewSolrClient() {
            try {
                System.out.println("server address:" + solrUrl);
                HttpSolrClient client = new HttpSolrClient(solrUrl);
                client.setConnectionTimeout(30000);
                client.setDefaultMaxConnectionsPerHost(100);
                client.setMaxTotalConnections(100);
                client.setSoTimeout(30000);
                return client;
            } catch (Exception ex) {
                throw new RuntimeException(ex);
            }
        }
    
        private SolrClient createCouldSolrClient() {
            CloudSolrClient client = new CloudSolrClient(zkUrl);
            client.setZkClientTimeout(30000);
            client.setZkConnectTimeout(50000);
            client.setDefaultCollection(collectionName);
            return client;
        }
    
        public void close() {
            try {
                client.close();
            } catch (IOException e) {
    
                e.printStackTrace();
            }
        }
    
        public SimpleSorl(String solrUrl, int num) {
            this.solrUrl = solrUrl;
            this.client = createNewSolrClient();
            this.num = num;
        }
    
        public SimpleSorl(String zkUrl, int num, String collection) {
            this.zkUrl = zkUrl;
            this.num = num;
            collectionName = collection;
            this.client = createCouldSolrClient();
        }
    
        public void createDocs() {
            System.out.println("======================add doc ===================");
            Collection<SolrInputDocument> docs = new ArrayList<SolrInputDocument>();
            for (int i = 1; i <= num; i++) {
                SolrInputDocument doc1 = new SolrInputDocument();
                doc1.addField("id", UUID.randomUUID().toString(), 1.0f);
                doc1.addField("name", "bean");
                doc1.addField("equIP_s", "192.168.2.104");
                doc1.addField("level_s", "4");
                doc1.addField("collectPro_s", "ffffffffffffffffffffjajajajajajdddddddddd");
                doc1.addField("sourceType_s", "miaohqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa");
                doc1.addField("filePath_s", "/home/xxxx/test");
                doc1.addField("filename_s", "zhonggggmaiaiadadadddddddddddddddddddddddddd");//            doc1.addField("_route_", "shard1");
                docs.add(doc1);
            }
            try {
                UpdateResponse rsp = client.add(docs);
                System.out
                        .println("Add doc size" + docs.size() + " result:" + rsp.getStatus() + " Qtime:" + rsp.getQTime());
    
                UpdateResponse rspcommit = client.commit();
                System.out.println("commit doc to index" + " result:" + rsp.getStatus() + " Qtime:" + rsp.getQTime());
    
            } catch (SolrServerException | IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
    
        }
    
        public void queryDocs() {
            SolrQuery params = new SolrQuery();
            System.out.println("======================query===================");
            params.set("q", "addparam_s:*");
            params.set("start", 0);
            params.set("rows", 5);
            params.set("sort", "accesstime_s desc");
    
            try {
                QueryResponse rsp = client.query(params);
                SolrDocumentList docs = rsp.getResults();
                System.out.println("查询内容:" + params);
                System.out.println("文档数量:" + docs.getNumFound());
                System.out.println("查询花费时间:" + rsp.getQTime());
    
                System.out.println("------query data:------");
                for (SolrDocument doc : docs) {
                    // 多值查询
                    @SuppressWarnings("unchecked")
                    List<String> collectTime = (List<String>) doc.getFieldValue("collectTime");
                    String clientmac_s = (String) doc.getFieldValue("clientmac_s");
                    System.out.println("collectTime:" + collectTime + "	 clientmac_s:" + clientmac_s);
                }
                System.out.println("-----------------------");
            } catch (Exception e) {
                e.printStackTrace();
            }
    
        }
    
        public void deleteById(String id) {
            System.out.println("======================deleteById ===================");
            try {
                UpdateResponse rsp = client.deleteById(id);
                client.commit();
                System.out.println("delete id:" + id + " result:" + rsp.getStatus() + " Qtime:" + rsp.getQTime());
            } catch (SolrServerException | IOException e) {
                e.printStackTrace();
            }
        }
    
        public void deleteByQuery(String queryCon) {
            System.out.println("======================deleteByQuery ===================");
            UpdateResponse rsp;
    
            try {
                UpdateRequest commit = new UpdateRequest();
                commit.deleteByQuery(queryCon);
                commit.setCommitWithin(5000);
                commit.process(client);
                System.out.println("url:"+commit.getPath()+"	 xml:"+commit.getXML()+" method:"+commit.getMethod());
    //            rsp = client.deleteByQuery(queryCon);
    //            client.commit();
    //            System.out.println("delete query:" + queryCon + " result:" + rsp.getStatus() + " Qtime:" + rsp.getQTime());
            } catch (SolrServerException | IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
    
        }
    
        public void updateField(String id,String fieldName, Object fieldValue) {
            System.out.println("======================updateField ===================");
            HashMap<String, Object> oper = new HashMap<String, Object>();
    //        多值更新方法
    //        List<String> mulitValues = new ArrayList<String>();
    //        mulitValues.add(fieldName);
    //        mulitValues.add((String)fieldValue);
            oper.put("set", fieldValue);
    
            SolrInputDocument doc = new SolrInputDocument();
            doc.addField("id", id);
            doc.addField(fieldName, oper);
            try {
                UpdateResponse rsp = client.add(doc);
                System.out.println("update doc id" + id + " result:" + rsp.getStatus() + " Qtime:" + rsp.getQTime());
                UpdateResponse rspCommit = client.commit();
                System.out.println("commit doc to index" + " result:" + rspCommit.getStatus() + " Qtime:" + rspCommit.getQTime());
    
            } catch (SolrServerException | IOException e) {
                e.printStackTrace();
            }
    
        }
    
        public static void main(String args[]) {
            String url = "http://127.0.0.1:8983/solr/test201606";
            String zkUrl = "127.0.0.1:9983";
    //        PropertyConfigurator.configure("./etc/log4j.properties");
            SimpleSorl ss = new SimpleSorl(url, 2);
            SimpleSorl sc = new SimpleSorl(zkUrl, 2, "test201607");
            // 添加文档
            sc.createDocs();
    
            // 删除文档
    //        sc.deleteById("00cda454-bd3d-4945-814f-afa7110dcd21");
             sc.deleteByQuery("name:bean");
            
            //更新文档
            sc.updateField("bd67564f-4939-4de1-9a83-3483ebbbbbee", "name", "1233313131313");
            
            sc.close();
            
    
            // 查询文档
            ss.queryDocs();
            ss.close();
    
        }
    
    }
  • 相关阅读:
    给video添加自定义进度条
    高德地图鼠标获取经纬度
    高德地图行政区域划分
    面试经验之谈
    Hybrid App 开发模式
    运维 08 常用服务安装部署
    运维 07 Linux系统基础优化及常用命令
    运维 06 vim与程序员
    运维 05 Shell基本命令
    运维 04 Shell基础命令(二)
  • 原文地址:https://www.cnblogs.com/seaspring/p/5595672.html
Copyright © 2020-2023  润新知