검색/Solr

multiple dataSource for one Collection

듐듐다다 2019. 12. 11. 12:13
반응형

상황 : deal_list Collection 을 위해 만들어진 색인 쿼리가 점점 무거워지고 있다.

현재 2000만건 색인 중이지만 추후에, 특정 상점의 데이터의 비중이 몹시 커질 예정이다.


문제 : 특정 상점만 분리해서 색인을 진행하고 싶다. 그러나 collection은 동일하게 deal_list 여야 한다.

 

방법 1

 

(asis) solrconfig.xml

<requestHandler name="/dataimport" class="solr.DataImportHandler">
    <lst name="defaults">
      <str name="config">data-config.xml</str>
    </lst>
  </requestHandler>

(tobe) solrconfig.xml

    <requestHandler name="/dataimport2"
         class="org.apache.solr.handler.dataimport.DataImportHandler">
        <lst name="defaults">
          <str name="config">data-config1.xml</str>
        </lst>
      </requestHandler>

      <requestHandler name="/dataimport"
         class="org.apache.solr.handler.dataimport.DataImportHandler">
        <lst name="defaults">
          <str name="config">data-config2.xml</str>
        </lst>
      </requestHandler>

 

 

결과 : 성공 . dataimport 창이 생성됨

 

처음에는 fail 떴었는데

{
  "responseHeader": {
    "status": 0,
    "QTime": 1
  },
  "initArgs": [
    "defaults",
    [
      "config",
      "data-config1.xml"
    ],
    "deal_list_shard2_replica1",
    [
      "config",
      "data-config2.xml"
    ]
  ],
  "command": "status",
  "status": "idle",
  "importResponse": "",
  "statusMessages": {
    "Time Elapsed": "0:0:6.991",
    "Total Requests made to DataSource": "0",
    "Total Rows Fetched": "0",
    "Total Documents Processed": "0",
    "Total Documents Skipped": "0",
    "Full Import failed": "2019-12-11 11:51:38"
  }
}

 

solr를 재 실행 하고 나니 admin에 다음과 같이 dataimport 창이 하나 더 생성됨

 

첫번째 dataimport 에는 clean, commit 옵션 설정하고

두번째 dataimport2에는 commit 옵션만 설정

색인 후 각 db의 데이터가 모두 잘 검색이 된다.

 

 

색인 수행 테스트 :  

1. dataimport1 과 dataimport2를 약간의 텀을 두고 색인을 수행

    색인에 사용되는 쓰레드 수가 증가해서 deal_list 색인 속도가 빨라졌다.
    segments 의 size가 들쭉날쭉하게 생성된다.

2. dataimport1 수행 완료 후에 dataimport2를 수행

    dataimport를 나눈 의미가 없다.

   segments 의 size가 고르게 생성된다.

 

3 건수를 늘려서 테스트 진행해보기 

4 shard 여러개 생성 후 데이터 정상 분배 되는지 테스트

4 각 shard에 레플리카 추가 후에 데이터 정상 생성되는지 확인

 

  

 

 

반응형