簡體   English   中英

Datastax DSE搜索:如何使用Java發布solrconfig.xml和schema.xml?

[英]Datastax DSE Search : How to post solrconfig.xml and schema.xml using java?

我正在使用Datastax Enterprise和DSE Search(Cassandra上的SolR)編寫應用程序。

我的問題是我需要使用Java動態生成schema.xml並將solrconfig.xml和schema.xml都發送到SolR。 不使用卷曲。

我嘗試使用Commons HttpComponents進行此操作,但是插入cassandra表中的solrconfig.xml文件不正確。 將與Http相關的數據插入XML文件的開頭,如下所示:

��:
solr_adminsolr_resourcesresource_value��--9NDJNu2AW4jtIyX6ggQAgEqI3FXp3JpDZ6
Content-Disposition: form-data; name="solrconfig.xml"; filename="solrconfig.xml"
Content-Type: application/xml; charset=ISO-8859-1
Content-Transfer-Encoding: binary

<config>
<!-- In all configuration below, a prefix of "solr." for class names
     is an alias that causes solr to search appropriate packages,
     including org.apache.solr.(search|update|request|core|analysis)

[Continued...]

當然,當SolR嘗試讀取此配置時,它會失敗。

有人知道如何以編程方式將這兩個文件從Java正確發送到SolR嗎?

預先感謝您的回答。

使用HttpClient的HTTP Post應該可以工作。 可能schema.xml文件引用了需要上載的其他文件。 您可以檢查DSE system.log嗎? 您可以驗證HTTP Post是否可以與其他schema.xml文件一起使用嗎?

我終於找到了解決方法。 我查看了Solandra測試,發現它們如何將文件發送到solr。

         URL url = new URL("http://hostname:port/solr/resource/solrksname.tablename/schema.xml");

        // write
        try {

            HttpURLConnection conn = (HttpURLConnection) url.openConnection();
            conn.setDoOutput(true);
            OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream());
            wr.write(builder.toString());
            wr.flush();
            wr.close();

            System.out.println("Schema insert response code : " + conn.getResponseCode());

        } catch (IOException e) {
            e.printStackTrace();
        }

響應代碼為200,檢查返回正確的架構,solr admin中沒有錯誤,並且在創建solr core時也沒有錯誤。 不知道我第一次是怎么做錯的,方法是使用基本的HttpURLConnection並通過輸出流編寫器來流數據。 無需HttpCommons。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM