본문 바로가기
WIKI 기술 지식 베이스

Refresh search analyzer

원문 보기 위키 갱신

출처: 문서

본문

검색 분석기 새로 고침

Refresh Search Analyzer API를 사용하면 검색 분석기의 리소스 파일에 변경 사항을 실시간으로 적용할 수 있어요. 예를 들어, 분석기의 동의어 목록을 변경하면 인덱스를 닫았다가 다시 열 필요 없이 변경 사항이 바로 적용돼요:

POST /_plugins/_refresh_search_analyzers/{index}

{% include copy-curl.html %}

경로 파라미터

다음 표는 사용 가능한 경로 파라미터를 정리한 거예요. 모든 경로 파라미터는 필수예요.

파라미터 데이터 타입 설명
index String 연산이 적용되는 인덱스, 데이터 스트림, 인덱스 별칭의 쉼표로 구분된 목록이에요. 와일드카드 표현식(*)을 지원해요. _all 또는 *를 사용하면 클러스터에 있는 모든 인덱스와 데이터 스트림을 지정할 수 있어요.

쿼리 파라미터

다음 표는 지원되는 쿼리 파라미터를 정리한 거예요.

파라미터 데이터 타입 설명
reload_cached_resources Boolean true로 설정하면, 디스크에서 파일을 로드하는 토큰 필터(예: hunspell 필터의 사전 파일)의 캐시를 다시 빌드하지 않고 디스크에서 캐시된 리소스를 다시 로드해요. false(기본값)이면 분석기 팩토리는 다시 빌드되지만 캐시된 리소스는 재사용돼요.

토큰 필터를 업데이트 가능하게 만들기

토큰 필터는 updateable 플래그가 true일 때만 새로 고쳐져요. 업데이트 가능한 필터는 기존 문서가 다시 분석되지 않기 때문에 인덱스 분석기가 아니라 검색 분석기에서만 사용할 수 있어요. 다음 요청은 업데이트 가능한 동의어 필터가 있는 인덱스를 생성하고, 이를 desc 필드의 검색 분석기로 적용해요:

PUT /synonym_index
{
  "settings": {
    "index": {
      "analysis": {
        "analyzer": {
          "my_synonyms": {
            "tokenizer": "whitespace",
            "filter": [
              "synonym"
            ]
          }
        },
        "filter": {
          "synonym": {
            "type": "synonym_graph",
            "synonyms_path": "analysis/synonyms.txt",
            "updateable": true
          }
        }
      }
    }
  },
  "mappings": {
    "properties": {
      "desc": {
        "type": "text",
        "analyzer": "standard",
        "search_analyzer": "my_synonyms"
      }
    }
  }
}

{% include copy-curl.html %}

synonyms_path는 각 노드의 config 디렉터리를 기준으로 한 상대 경로예요. 파일을 편집한 후에는 분석기를 새로 고치세요:

POST /_plugins/_refresh_search_analyzers/synonym_index

{% include copy-curl.html %}

응답 예시

응답에는 각 인덱스에서 새로 고쳐진 분석기들이 표시돼요:

{
  "_shards": {
    "total": 1,
    "successful": 1,
    "failed": 0
  },
  "successful_refresh_details": [
    {
      "index": "synonym_index",
      "refreshed_analyzers": [
        "my_synonyms"
      ]
    }
  ]
}

이제 desc에 대한 검색에는 업데이트된 동의어 목록이 사용돼요.

더 알아보기 (Learn more)