Solr7.3定时与JAVA操作。

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/java20150326/article/details/83717907

1.solr详细介绍与java操作

https://blog.csdn.net/bskfnvjtlyzmv867/article/details/80940089

Java操作SOLR很全面的文章。

2.solr管理界面定时

暂时没有调试成功

3.quartz方式定时

        <dependency>
            <groupId>org.apache.solr</groupId>
            <artifactId>solr-solrj</artifactId>
            <version>7.3.0</version>
        </dependency>
        <dependency>
            <groupId>org.quartz-scheduler</groupId>
            <artifactId>quartz</artifactId>
            <version>2.2.3</version>
            <exclusions>
                <exclusion>
                    <artifactId>c3p0</artifactId>
                    <groupId>c3p0</groupId>
                </exclusion>
            </exclusions>
        </dependency>
<!-- 要调用的工作类-->
    <bean id="myproductSearchIndex" class="com.xx.xx.handler.MyproductSearchIndex"></bean>
    <bean id="jobTask" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
        <!-- 调用的类 -->
        <property name="targetObject" ref="myproductSearchIndex"/>
        <!-- 调用类中的方法 -->
        <property name="targetMethod" value="run"/>
        <!--表示不并发操作-->
        <property name="concurrent" value="false"/>
    </bean>
    <!-- 配置定时器时间间隔 -->
    <!-- 定义时间间隔触发器  */10 * * * * ?表示每隔10秒执行一次-->
    <bean id="jobTaskTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
        <property name="jobDetail">
            <ref bean="jobTask" />
        </property>
        <property name="cronExpression">
            <value>0 0/30 * * * ?</value><!-- 每隔30分执行一次 -->
        </property>
    </bean>
    <!--配置启动定时器-->
    <bean id="schedulerFactoryBean" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
        <property name="applicationContextSchedulerContextKey" value="applicationContext" />
        <property name="triggers">
            <list>
                <ref bean="jobTaskTrigger" />
            </list>
        </property>
    </bean>
MyproductSearchIndex.java
import org.apache.solr.client.solrj.SolrClient;
import org.apache.solr.client.solrj.SolrQuery;
import org.apache.solr.client.solrj.SolrRequest;
import org.apache.solr.client.solrj.SolrServerException;
import org.apache.solr.client.solrj.impl.HttpSolrClient;
import org.apache.solr.client.solrj.request.QueryRequest;
import org.apache.solr.client.solrj.response.QueryResponse;
import org.apache.solr.common.SolrDocument;
import org.apache.solr.common.SolrDocumentList;
import org.apache.solr.common.SolrInputDocument;
import org.apache.solr.common.params.MapSolrParams;
import org.apache.solr.common.util.NamedList;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

@Component
public class MyproductSearchIndex {
    private static final Logger LOGGER = LoggerFactory.getLogger(MyproductSearchIndex.class);
    enum Command {
        DELTA_IMPORT, FULL_IMPORT
    }
    public void run() {
        try {
            // solr服务的url,my_core是前面创建的solr core
            String url = "http://localhost:4012/solr7/my_core";
            // 创建HttpSolrClient
            SolrClient solrClient = new HttpSolrClient.Builder(url)
                    .withConnectionTimeout(5000)
                    .withSocketTimeout(5000)
                    .build();
            SolrRequest<QueryResponse> request = buildRequest(Command.DELTA_IMPORT, "SYSROLE");
            request.setPath("/dataimport");
            NamedList<Object> resp = solrClient.request(request, null);
            LOGGER.info(" 重建索引成功,具体结果:" + resp.toString());
        } catch (Exception e) {
            LOGGER.info(" 重建索引成功,异常信息:" + e.getMessage());
            e.printStackTrace();
        }
    }

    private SolrRequest<QueryResponse> buildRequest(Command command, String entity) {
        Map<String, String> map = new HashMap<>();
        switch (command) {
            case DELTA_IMPORT:
                map.put("command", "delta-import");
                map.put("clean", "false");
                map.put("commit", "true");
                map.put("optimize", "false");
                map.put("index", "false");
                map.put("entity", entity);
                map.put("debug", "false");
                map.put("wt", "json");
                return new QueryRequest(new MapSolrParams(map));
            case FULL_IMPORT:
                map.put("command", "full-import");
                map.put("clean", "true");
                map.put("commit", "true");
                map.put("optimize", "false");
                map.put("entity", entity);
                map.put("index", "false");
                map.put("debug", "false");
                map.put("wt", "json");
                return new QueryRequest(new MapSolrParams(map));
        }
        return null;
    }

    public  void insertOrUpdateIndex() throws IOException, SolrServerException {
        // solr服务的url,my_core是前面创建的solr core
        String url = "http://localhost:4012/solr7/my_core";
        // 创建HttpSolrClient
        HttpSolrClient client = new HttpSolrClient.Builder(url)
                .withConnectionTimeout(5000)
                .withSocketTimeout(5000)
                .build();
        // 创建Document对象
        SolrInputDocument document = new SolrInputDocument();
        document.addField("id", "1111");
        document.addField("NAME", "Solr入门xxxxyy");
        document.addField("ENNAME", "Solr版本差异也太大了xxxxyy");
        document.addField("DATASCOPE", "Solr版本差异也太大了DATASCOPExxxyy");
        client.add(document);
        client.commit();
    }

    public  void deleteIndex() throws IOException, SolrServerException {
        String url = "http://localhost:4012/solr7/my_core";
        HttpSolrClient client = new HttpSolrClient.Builder(url)
                .withConnectionTimeout(5000)
                .withSocketTimeout(5000)
                .build();
        client.deleteById("1111");
        client.commit();
        // 根据条件删除
        //client.deleteByQuery("id:1111");
        // 全部删除
        //client.deleteByQuery("*:*");
    }

    public  void simpleSearch() throws IOException, SolrServerException {
        String url = "http://localhost:4012/solr7/my_core";
        HttpSolrClient client = new HttpSolrClient.Builder(url)
                .withConnectionTimeout(5000)
                .withSocketTimeout(5000)
                .build();
        // 创建SolrQuery
        SolrQuery query = new SolrQuery();
        // 输入查询条件
        query.setQuery("NAME:*x");
        query.setRows(20);
        // 执行查询并返回结果
        QueryResponse response = client.query(query);
        // 获取匹配的所有结果
        SolrDocumentList list = response.getResults();
        // 匹配结果总数
        long count = list.getNumFound();
        System.out.println("总结果数:" + count);

        for (SolrDocument document : list) {
            System.out.println(document.get("id"));
            System.out.println(document.get("NAME"));
            System.out.println(document.get("ENNAME"));
            System.out.println(document.get("DATASCOPE"));
            System.out.println("================");
        }
    }
}

4.cosn

5.shell

猜你喜欢

转载自blog.csdn.net/java20150326/article/details/83717907
今日推荐