SolrEntityProcessor를 이용한 Solr Index 마이그레이션 (3.x → 4.x)

SolrEntityProcessor란?



DIH(DataImportHandler)의 확장 기능인 SolrEntityProcessor는, 다른 Solr 인스턴스나 코어간에 데이터 임포트를 실시하는 수단을 제공해 줍니다.
특히 Solr 3.x에서 4.x로 Index를 마이그레이션하는 경우 Index 형식이 변경되어 Index 파일을 그대로 복사해도 사용할 수 없으므로 SolrEntityProcessor를 사용하여 유연한 Index 마이그레이션이 가능합니다.
다만, 당연합니다만 Index의 이행이므로, 이행 대상 필드는 스키마 정의로 stored=true 가 되어 있을 필요가 있습니다 (stored=false 는 Index 에 필드치를 가지지 않기 때문에).

그림은 이런 느낌





지정 가능한 파라미터 중에서 중요한 것을 픽업


  • query: 데이터 검색에 사용되는 쿼리에서 Solr 표준 요청 매개 변수를 사용할 수 있습니다.
  • rows : 매번 요청시 검색할 문서 수입니다. 너무 작으면 데이터 캡처에 그만큼 왕복이 발생하여 시간이 길어집니다.
  • wt: 응답 데이터의 형식을 javabin 또는 xml로 지정할 수 있습니다. javabin은 바이너리 형식으로 빠르지 만 다른 Solr 버전에서 호환성이 걱정되었지만 Solr3.5와 Solr4.10.2 사이에서 시도한 결과 문제가 없었습니다. 제발).
  • timeout: 쿼리 시간 제한 시간을 분 단위로 지정합니다. 데이터 가져오기 세션이 중단 상태에 빠지지 않는 경우에 유용합니다.

  • 해보자



    이 절에서는 Solr3.5의 Index를 Solr4.10.2로 마이그레이션하는 시나리오에서 설명합니다.
    * 마이그레이션 대상 필드에서 Solr3.5와 Solr4.10.2의 스키마 정의가 일치하는지 확인합니다 (stored = true도).
    * Solr4.10.2 측에서 다음 설정을 수행합니다.

  • solrconfig.xml을 편집합니다.
  • DIH 관련 jar가 참조할 수 있도록 지시어를 지정합니다.
  •   <lib dir="../../../dist/" regex="solr-dataimporthandler-\d.*\.jar" />
    
  • requestHandler/dataimport를 설정합니다.
  •  <requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">
       <lst name="defaults">
         <str name="config">data-config.xml</str>
       </lst>
     </requestHandler>
    
  • data-config.xml을 만듭니다 (solrconfig.xml과 동일한 디렉토리).
  •    <dataConfig>
         <document>
           <entity name="sep" processor="SolrEntityProcessor" url="http://xxx.xxx.xxx.xxx:8983/solr" query="*:*" rows="1000" timeout="5" wt="xml"/>
         </document>
       </dataConfig>
    
  • Solr3.5 및 Solr4.10.2를 각각 시작합니다.
  • Solr4.10.2에 full-import 요청을 발행합니다.
    요청은 즉시 종료 응답을 반환하지만 실제로 가져오기는 비동기적으로 실행됩니다.
    참고: full-import는 인덱스를 모두 삭제한 다음 데이터를 가져옵니다. 원래 색인 데이터를 남기려면 delta-import를 사용하십시오.
  •   $ curl "http://localhost:8983/solr/dataimport?command=full-import"
    
  • 데이터 가져오기가 끝나면(종료되었는지 solr.log에서 commit 정보를 확인하십시오), Solr4.10.2의 Index에 등록된 문서 수가 예상대로 되어 있는지 확인합니다.

  • 요약



    사용해 본 느낌, 자유롭게 쿼리를 쓸 수 있고 또한 대상 필드를 지정 가능하고, 1회 요구의 처리량도 지정할 수 있는 등, 사용하기 편리하다고 생각했습니다.

    좋은 웹페이지 즐겨찾기