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에 대한 검색에는 업데이트된 동의어 목록이 사용돼요.