1. 程式人生 > >solr Java測試

solr Java測試

1  概述

Solr 是一個獨立的企業級搜尋應用伺服器,它對外提供類似於 Web-service 的 API 介面。使用者可以通過 http請求,向搜尋引擎伺服器提交一定格式的 XML 檔案,生成索引;也可以通過 Http Get 操作提出查詢請求,並得到XML 格式的返回結果。這裡主要講解下通過 http Get 請求這種方式。

首先,我們就必須通過 HTTP 請求類似

的連結,對伺服器進行訪問。將最終結果以類似流的方式傳回客戶端。而具體形式是以xml 的形式,類似下圖:

2  SolrJ使用

SolrJ是操作SolrJAVA客戶端,它提供了增加、修改、刪除、查詢Solr索引的

JAVA介面。SolrJ針對Solr提供了RestHTTP介面進行了封裝,SolrJ底層是通過使用httpClient中的方法來完成Solr的操作。

SolrJ通常向後保持相容性,可以使用新版本的SolrJ訪問較舊的Solr,反之亦然。建議使用同Solr server同版本的SolrJ,

2.1     依賴包引用

使用maven配置:

       <dependency>
           <groupId>org.apache.solr</groupId>
           <artifactId>solr-solrj</artifactId>
           <version>6.3.0</version>
       </dependency>
 


注:由於使用的solr各個版本的api有所不同,所以操作方式有區別,

下面是舊版本向新版本的api改變:

SolrServer -> SolrClient
HttpSolrServer -> HttpSolrClient
CloudSolrServer -> CloudSolrClient

以下測試都將使用新api進行操作。

2.2測試

import org.apache.solr.client.solrj.SolrClient;
import org.apache.solr.client.solrj.SolrQuery;
import org.apache.solr.client.solrj.impl.HttpSolrClient;
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;
 
/**
 * @ClassName: IndexDemo
 * @Description: solr操作
*/
public class IndexDemo {
    // 單點
    public static final String SOLR_URL = "http://localhost:8983/solr/solr_java";
 
    // 叢集
    // String zkHostString ="zServerA:2181,zServerB:2181,zServerC:2181/solr";
    // SolrClient solr = new
    //CloudSolrClient.Builder().withZkHost(zkHostString).build();
 
    public static void main(String[] args) {
        AddDocs();
//      QueryDocs();
//      delDocs();
 
    }
 
    /**
     * @Description: 刪除索引
     */
    public static void delDocs() {
        try {
            SolrClient solr = new HttpSolrClient.Builder(SOLR_URL).build();
            //根據ID刪除
            solr.deleteById("552199");
            //根據條件刪除(如:刪除所有)
            //solr.deleteByQuery("*:*"); 
            solr.commit();
        } catch (Exception e) {
            System.out.println(e);
        }
        System.out.println("deletesuccess");
    }
   
   
 
    /**
     * @Description: 新增索引
     */
    public static void AddDocs() {
        try {
            SolrClient solr = new HttpSolrClient.Builder(SOLR_URL).build();
            SolrInputDocument document = new SolrInputDocument();
            document.addField("id", "100");
            document.addField("name", "測試");
            document.addField("price", "1000");
            UpdateResponse response = solr.add(document);
            solr.commit();
 
        } catch (Exception e) {
            System.out.println(e);
        }
        System.out.println("addsuccess");
    }
   
   
   
    /**
     * @Description: 查詢索引
     */
    public static void QueryDocs() {
        try {
            //通過Http查詢
            //http://localhost:8983/solr/solr_java/select?q="id:100"
           
            SolrClient solr = new HttpSolrClient.Builder(SOLR_URL).build();
            SolrQuery query = new SolrQuery();
//          query.set("q", "id:*");
            query.set("q", "id:100");
            QueryResponse response = solr.query(query);
            SolrDocumentList list = response.getResults();
            // 搜尋得到的結果數
            System.out.println("Find:" + response.getResults().getNumFound());
           
            for (SolrDocument solrDocument : list) {
                System.out.println(solrDocument.get("name"));
            }
        } catch (Exception e) {
            System.out.println(e);
        }
    }
 
}


//批量新增

/**
     * @Description: 批量新增
     */
    public static void bathAddDocs() {
        String[] words = { "中央全面深化改革領導小組", "第四次會議"};
        List<SolrInputDocument> docs = new ArrayList<SolrInputDocument>();
        for (int i = 0; i < 2; i++) {
            SolrInputDocument doc1 = new SolrInputDocument();
            doc1.addField("id", "id" + i, 1.0f);
            doc1.addField("name", words[i], 1.0f);
            doc1.addField("price", 10 * i);
            docs.add(doc1);
        }
        try {
            SolrClient solr = new HttpSolrClient.Builder(SOLR_URL).build();
            UpdateResponse response = solr.add(docs.iterator());
            //增加後通過執行commit函式commit
            solr.commit();
           
        } catch (Exception e) {
            System.out.println(e);
        }
        System.out.println("addsuccess");
    }


相關推薦

solr Java測試

1  概述 Solr 是一個獨立的企業級搜尋應用伺服器,它對外提供類似於 Web-service 的 API 介面。使用者可以通過 http請求,向搜尋引擎伺服器提交一定格式的 XML 檔案,生成索引;也可以通過 Http Get 操作提出查詢請求,並得到XML 格式的返

Java測試工具使用(1)--Junit

所有 alt 命名 浪費 依然 之前 pan 時報 新建 在進行測試之前需要導入junit的兩個包,分別是   junit:4.12;hamcrest-core:1.1 1、基本測試標簽 [email protected]/* */@[email pr

java-測試開發字符串

bst 新的 beautiful stat 測試 dem efi main highlight package j2se; public class StringDemo { private String demoString="ceshixiaoyouning";

自學Java測試代碼

wan 二維數組 ted eth args bin -- pac blog 2017-08-22 21:23:37、 writer:pprp package test; public class helloWorld { int maxn = 123;

java測試】Junit、Mock+代碼覆蓋率

tput 活性 插件 報告 tsa println doc 彈出 exe 原文見此處 單元測試是編寫測試代碼,用來檢測特定的、明確的、細顆粒的功能。單元測試並不一定保證程序功能是正確的,更不保證整體業務是準備的。 單元測試不僅僅用來保證當前代碼的正確性,更重要的是用來保證代

java測試程序運行時間

sch exc 指定 rtti tro light pre 方法的參數 log java測試程序運行時間: long startTime = System.currentTimeMillis(); FileUtils.copyDir(FileUtils.SOURCEPAT

Java測試技巧

輸入 key 異常 pre exc gpo 項目 print project 快捷鍵 修改快捷鍵 window-》preference-》general-》keys: 查找引用:ctrl+shift+g 覆蓋測試:alt+shift+E,T 復制一行:ctrl+alt+

Java測試筆記

info ted ring edate break 老師 etop emp 余額 本次Java測試主要是做一個與ATM相似的系統,用文本文件來作為用戶數據庫,實現存款、取款、轉賬、修改密碼、查詢余額的功能。在做這次測試之前老師並沒有講解與Java相關的知識,所以這就需要我們

9.20第一次java測試有感

較差 最大的 小學 人的 自己 生活 體會 無聊 不想 今天下午的Java測試體會深刻,真的可能我一暑假學的還沒有今天一下午學的多。但通過今天一下午地與Java近距離接觸 ,我感受到我與真正的Java距離還是特別遠的。以後我的路還很長,我對Java仍然還是一竅不通的,以後需

java測試感受

pub 招聘會 感到 next 卡號 簡單的 pass 時也 try 這個星期四下午來了一次Java考試,用來測試在暑假自學Java的學習情況,不得不說這次考試十分的成功,把我對這學期的學習信心打擊的很難受,我也知道這是我應得的教訓,我也對我的專業水平有了很

java 測試開發基礎知識(類加載,JVM等)

常量表達式 對數 前端 .cn 都是 新的 ron 技術分享 區域 寫在開頭: 面試的時候別人很可能會問你的java原理,.class load 原理, jvm機制,這些都是Java的底層知識,特整理如下: 1. 首先,編寫一個java程序,大家會用ide編寫一個例

java測試指定IP和埠是否可以訪問

java測試指定IP和埠是否可以訪問 程式碼 package com.eplant.common; /** * @Author: 瘋狂的蝸牛 * @Date: 2017-09-06 11:16 */ import java.io.IOExcep

Java測試[email pro

在java的test程式碼中,如果遇到了要傳入@requestBody宣告的引數時,可以使用以下程式碼 String infra = "{\"upperId\":110000,\"areaName\":\"測試BaseArea\",\"remark\":\"備註\"}"; HttpHea

fabric-sdk-java基於1.0.0版本的End2endIT.java測試用例的執行

因為樓主也是才接觸區塊鏈不久只能就自己踩的坑說一下自己的解決方案,如果有什麼地方說的不對的,請留言指正。 1.環境搭建 首先在使用fabric-sdk時確保你的docker映象和環境沒有問題(特別注意版本的問題),一般在執行fabric hyperledger通過e2e-

Kafka安裝部署,及Java測試

Kafka 一、單例模式安裝 1、準備安裝檔案kafka_2.11-0.11.0.0.tgz,放到linux伺服器,並解壓 2、vim config/server.properties 3、修改項如下:   host.name=你的ip   listeners=PLA

Java測試用例簡介

 最近需要向組內其他成員普及一下關於Java測試用例的相關知識,特在此進行一下簡單的學習和總結。 JUnit簡介 JUnit是一個開源的Java單元測試框架,JUnit4對原有的JUnit框架進行了大幅度的改進,主要目標便是利用了Java中的Annotation,來代替以前必須要繼承AbstractTes

java測試private方法

當Java的類有一個方法的訪問修飾符是private,我們在寫測試類時該怎樣對它進行測試嗎?道難是先將它的修飾符改成public,然後在做完測試之後再將其改回public,其實完全不用這樣做,我們在編寫測試類的時候只要將其私有方法抽出,讓其可以訪問,就可以按要求進行測試了.

Java測試mongodb叢集(分片+副本集)

需要Java-mongo驅動jar包,官網下載:mongo-java-driver-3.5.0.jar 1.建立專案TestMongoDBShards,(具體建立專案參考楊海文件–IDEA開發工具的安裝及使用)匯入驅動jar包。點選 File -> Project Structure(快捷

java測試類用法

單獨建立一個包存放測試類,如com.test 首先要構建路徑新增測試類的相關類庫,方法是專案右鍵,buld path->config buld path->libraries->add library->junit 然後就可以導包,用它的類了, 可以直接建立jun