天天看點

Solr 14 - SolrJ操作SolrCloud叢集 (Solr的Java API)

如何使用Java API操作SolrCloud? 本篇通過簡單的示例, 示範通過SolrJ對SolrCloud的Collection進行增、删、改、查操作.

目錄

  • 1 pom.xml檔案的配置
  • 2 SolrJ操作SolrCloud
  • 版權聲明

項目的pom.xml依賴資訊請參照:

Solr 09 - SolrJ操作Solr單機服務 (Solr的Java API)

public class SolrCloudTest {
	// ZooKeeper位址
	private static String zkHostString = "10.0.20.50:2181, 10.0.20.51:2181, 10.0.20.52:2181";
	// collection預設名稱, 比如Solr伺服器上的collection是collection_shard1_replica1, 就是去掉"_shard1_replica1"的名稱
	private static String defaultCollection = "my_collection";
	// 用戶端連接配接逾時時間
	private static int zkClientTimeout = 3000;
	// ZooKeeper連接配接逾時時間
	private static int zkConnectTimeout = 3000;

	// cloudSolrServer實際
	private CloudSolrServer cloudSolrServer;

	// 測試方法之前構造 CloudSolrServer
	@Before
	public void init() {
		cloudSolrServer = new CloudSolrServer(zkHostString);
		cloudSolrServer.setDefaultCollection(defaultCollection);
		cloudSolrServer.setZkClientTimeout(zkClientTimeout);
		cloudSolrServer.setZkConnectTimeout(zkConnectTimeout);
		cloudSolrServer.connect();
	}

	// 向SolrCloud中建立索引
	@Test
	public void testCreateIndexToSolrCloud() throws Exception {
		SolrInputDocument document = new SolrInputDocument();
		document.addField("id", "100001");
		document.addField("title", "李四");
		cloudSolrServer.add(document);
		cloudSolrServer.commit();
	}

	// 搜尋索引
	@Test
	public void testSearchIndexFromSolrCloud() throws Exception {
		SolrQuery query = new SolrQuery();
		query.setQuery("*:*");
		try {
			QueryResponse response = cloudSolrServer.query(query);
			SolrDocumentList docs = response.getResults();

			System.out.println("文檔個數: " + docs.getNumFound());
			System.out.println("查詢時間: " + response.getQTime());

			for (SolrDocument doc : docs) {
				ArrayList title = (ArrayList) doc.getFieldValue("title");
				String id = (String) doc.getFieldValue("id");
				System.out.println("id: " + id);
				System.out.println("title: " + title);
				System.out.println();
			}
		} catch (SolrServerException e) {
			e.printStackTrace();
		} catch (Exception e) {
			System.out.println("Unknowned Exception!!!!");
			e.printStackTrace();
		}
	}

	// 删除索引
	@Test
	public void testDeleteIndexFromSolrCloud() throws Exception {
		// 根據id删除
		UpdateResponse response = cloudSolrServer.deleteById("zhangsan");
		// 根據多個id删除
		// cloudSolrServer.deleteById(ids);
		// 自動查詢條件删除
		// cloudSolrServer.deleteByQuery("product_keywords:教程");
		// 送出
		cloudSolrServer.commit();
	}

}
           

作者: 馬瘦風

出處: 部落格園 馬瘦風的部落格

您的支援是對部落客的極大鼓勵, 感謝您的閱讀.

本文版權歸部落客所有, 歡迎轉載, 但請保留此段聲明, 并在文章頁面明顯位置給出原文連結, 否則部落客保留追究相關人員法律責任的權利.

繼續閱讀