solrjНачало работы с solrj


замечания

В этом разделе представлен обзор того, что такое solrj, и почему разработчик может захотеть его использовать.

Он также должен упомянуть о любых крупных предметах в пределах solrj и ссылки на связанные темы. Поскольку документация для solrj является новой, вам может потребоваться создать начальные версии этих связанных тем.

Добавление документов в Solr с помощью SolrJ

Если у нас есть схема, похожая на:

<field name="id" type="string" indexed="true" stored="true" required="true" /> 

<field name="name" type="string" indexed="true" stored="true" />
 

код solrj для добавления контента в Solr будет выглядеть так:

 package com.stackoverflow.solrj.example;

import java.io.IOException;
import java.util.ArrayList;
import java.util.Collection;

import org.apache.solr.client.solrj.SolrClient;
import org.apache.solr.client.solrj.SolrServerException;
import org.apache.solr.client.solrj.impl.HttpSolrClient;
import org.apache.solr.common.SolrInputDocument;

public class SolrJIndexing {

    private final static String SOLR_URL = "http://localhost:8983/solr/mycollection";

    public static void main(String[] args) {
        SolrClient solrClient = new HttpSolrClient.Builder(SOLR_URL).build();
        SolrInputDocument document1 = getDocument(1, "Document example 1");
        SolrInputDocument document2 = getDocument(2, "Document example 2");
        Collection<SolrInputDocument> docs = new ArrayList<SolrInputDocument>();
        docs.add(document1);
        docs.add(document2);
        try {
            solrClient.add(docs);
            solrClient.commit();
        } catch (SolrServerException | IOException e) {
            e.printStackTrace();
        }
    }

    private static SolrInputDocument getDocument(int id, String name) {
        SolrInputDocument document = new SolrInputDocument();
        document.addField("id", id);
        document.addField("name", name);
        return document;
    }

}
 

Init SolrJ-клиент для локального кластера STANDALONE и удаленного CLOUD с Kerberos

Удобный метод инициализации клиента SolrJ на основе свойств конфигурации;

private void initSolrClient() {
    if (conf.kerberos().isEnabled()) {
        System.setProperty("java.security.auth.login.config", conf.kerberos().confPath());
        HttpClientUtil.addConfigurer(new Krb5HttpClientConfigurer());
    }
    if (conf.solr().getMode() == SolrProperties.Mode.STANDALONE) {
        this.solr = new HttpSolrClient.Builder(conf.solr().url()).build();
    }
    if (conf.solr().getMode() == SolrProperties.Mode.CLOUD) {
        this.solr = new CloudSolrClient.Builder().withZkHost(conf.solr().zookeepers()).build();
    }
}
 

REMOTE с Kerberos:

solr.conf.mode=CLOUD
solr.conf.zookepers=zookeeper-01.mydomain.com:2181,zookeeper-02.mydomain.com:2181,zookeeper-03.mydomain.com:2181/solr
kerberos.enabled=true
kerberos.confPath=/my/path/to/krb5/jaas-client.conf
 

ЛОКАЛЬНОЕ РАЗВИТИЕ:

solr.conf.mode=STANDALONE
solr.conf.url=http://localhost:8983/solr
kerberos.enabled=false
 

Установка или настройка

SolrJ входит как часть распределения Solr, так как Solr 1.x. Последняя версия Solr можно скачать здесь . Из Solr-6.3.0, доступного в последней версии, нам необходимо получить следующие библиотеки и добавить их в наш путь сборки: / dist / apache-solr-solrj- .jar / dist / solrj-lib /

Как только мы закончим, SolrJ готов общаться с нашим экземпляром Solr. В следующем примере мы рассмотрим, как использовать SolrJ для запроса или добавления контента в Solr.

Запрос Solr с SolrJ

Если вы успешно добавили документы в Solr, используя предыдущий пример, теперь вы сможете получить их следующим образом:

package com.stackoverflow.solrj.example;

import java.io.IOException;
import java.util.Iterator;

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.HttpSolrClient;
import org.apache.solr.client.solrj.response.QueryResponse;
import org.apache.solr.common.SolrDocument;
import org.apache.solr.common.SolrDocumentList;

public class SolrJQueryExample {

    private final static String SOLR_URL = "http://localhost:8983/solr/mycollection";

    public static void main(String[] args) throws SolrServerException, IOException {

        SolrClient solrClient = new HttpSolrClient.Builder(SOLR_URL).build();
        SolrQuery solrQuery = new SolrQuery();
        solrQuery.setQuery("example");
        solrQuery.setStart(0);
        solrQuery.setRows(10);

        QueryResponse queryResponse = solrClient.query(solrQuery);
        SolrDocumentList solrDocs = queryResponse.getResults();
        Iterator<SolrDocument> iterator = solrDocs.iterator();
        while (iterator.hasNext()) {
            SolrDocument solrDocument = iterator.next();
            String docId = (String) solrDocument.getFieldValue("id");
            String docName = (String) solrDocument.getFieldValue("name");
            System.out.println("Document " + docId + ": " + docName);
        }

    }
}