Elasticsearch
분석기
수색…
비고
분석기는 문자열 필드에서 텍스트를 가져 와서 쿼리 할 때 사용할 토큰을 생성합니다.
분석기는 다음 순서로 작동합니다.
-
CharFilters(0 이상) -
Tokenizer(하나) -
TokenFilters(0 이상)
분석기는 매핑에 적용되어 필드가 인덱싱 될 때 문자열 전체가 아니라 토큰 단위로 수행됩니다. 쿼리 할 때 입력 문자열은 분석기를 통해 실행됩니다. 따라서 분석기에서 텍스트를 정규화하면 쿼리에 정규화되지 않은 문자열이 포함되어 있어도 항상 일치합니다.
매핑
"분석기"를 사용하여 분석기를 매핑에 적용 할 수 있으며, 기본적으로 "표준"분석기가 사용됩니다. 또는 토큰 화나 정규화가 유용하지 않기 때문에 분석기를 사용하지 않으려면 "색인"을 지정할 수 있습니다 ( "not_analyzed"
PUT my_index
{
"mappings": {
"user": {
"properties": {
"name": {
"type": "string"
"analyzer": "my_user_name_analyzer"
},
"id": {
"type": "string",
"index": "not_analyzed"
}
}
}
}
}
다중 필드
때로는 다른 분석기로 필드의 여러 고유 인덱스를 갖는 것이 유용 할 수 있습니다. 다중 필드 기능을 사용하여 그렇게 할 수 있습니다.
PUT my_index
{
"mappings": {
"user": {
"properties": {
"name": {
"type": "string"
"analyzer": "standard",
"fields": {
"special": {
"type": "string",
"analyzer": "my_user_name_analyzer"
},
"unanalyzed": {
"type": "string",
"index": "not_analyzed"
}
}
}
}
}
}
}
쿼리 할 때 단순히 "user.name"(이 경우 Stanard Analyzer를 계속 사용함)을 사용하는 대신 "user.name.special"또는 "user.name.unanalyzed"를 사용할 수 있습니다. 문서는 변경되지 않고 색인 생성에만 영향을줍니다.
분석기
elasticsearch의 분석은 색인의 데이터를 기꺼이 분석 할 때 상황에 따라 달라집니다.
분석기를 사용하여 다음을 수행 할 수 있습니다.
- 약어
- 스테 밍
- 오타 처리
우리는 지금 그들 각각을 볼 것입니다.
약어 :
분석기를 사용하여 elasticsearch에 데이터에서 약어를 처리하는 방법을 알려줄 수 있습니다. 예 : dr => Doctor 따라서 색인에서 doctor 키워드를 검색 할 때마다 elasticsearch는 Dr에서 언급 한 결과도 반환합니다.
줄기 :
분석기에서 형태소 분석을 사용하면 수정 된 동사와 같은 기본 단어를 사용할 수 있습니다.
워드 수정 요구하다 요구 사항, 필수
오타 처리 :
분석기는 또한 'Resurrection'이라는 특정 단어를 검색하는 경우 쿼리하는 동안 오타가있는 결과를 반환합니다. 다시 검색과 같은 오타를 처리하고 결과를 다시 표시합니다.
워드 수정 부활 재출혈, 재 투여
탄성 측정기의 분석기
표준
단순한
공백
중지
예어
무늬
언어
스노볼
사례 분석기 무시
때로는 문서의 일치와 관련하여 쿼리의 경우를 무시해야 할 수도 있습니다. 이 경우 검색하는 동안 분석기를 사용하여 대소 문자를 무시할 수 있습니다. 각 필드는 작동하기 위해이 분석기를 속성에 포함해야합니다.
"settings": {
"analysis": {
"analyzer": {
"case_insensitive": {
"tokenizer": "keyword",
"filter": ["lowercase"]
}
}
}
}