일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- ELASTIC
- Kafka
- 차트
- token filter test
- license delete
- query
- TensorFlow
- Mac
- Java
- zip 파일 암호화
- plugin
- aggs
- analyzer test
- 900gle
- Elasticsearch
- aggregation
- flask
- high level client
- springboot
- matplotlib
- licence delete curl
- zip 암호화
- License
- 파이썬
- docker
- Test
- Python
- sort
- MySQL
- API
Archives
- Today
- Total
개발잡부
[es] normalizer 본문
반응형
normalizer
- keyword 필드는 애널라이저를 사용하지 않는 대신 노멀라이저(normalizer) 의 적용이 가능
- 노멀라이저는 애널라이저와 유사하게 settings 에서 정의하며 토크나이저는 적용할 수 없고 캐릭터 필터와 토큰 필터만 적용해서 사용이 가능함
실무 적용 케이스
요구사항
- 대소문자 구분 없이 검색 가능
- 띄어쓰기 상관없이 검색가능
- 대소문자, 띄어쓰기 상관없이 exact 매칭
테스트 )
normalizer 가 세팅된 index 생성 searchWord 필드에 doo_normalizer 맵핑
PUT doocoo
{
"settings": {
"analysis": {
"normalizer": {
"doo_normalizer": {
"type": "custom",
"char_filter": [],
"filter": ["lowercase", "asciifolding"]
}
}
}
},
"mappings": {
"properties": {
"searchWord": {
"type": "keyword",
"normalizer": "doo_normalizer"
}
}
}
}
데이터 입력
PUT doocoo/_doc/1
{
"searchWord": ["AI 할인","AI 최저가"]
}
대문자로 입력된 키워드들에 대해 색인된 term 을 확인해보잣
GET doocoo/_termvectors/1?fields=searchWord
영문 대문자가 소문자로 변경되어 색인된 것을 확인 단어사이 띄어쓰기를 제거 해야 하는데 이것은 batch 에서 색인 처리할때 하는것으로..
검색단계에서 쿼리로 처리할지 필터로 처리할지가 애매한 부분이다.
기존의 검색쿼리인 multi_match 안에 넣을 순 없고
아무튼
AI 할인 , ai 할인 둘다 검색이 되고 있는데 어떤 조건에 검색이 된건지 확인해 봐야겠다.
GET doocoo/_search
{
"query": {
"term": {
"searchWord": {
"value": "ai 할인"
}
}
}
}
Profile data
description
반응형
'ElasticStack > Elasticsearch' 카테고리의 다른 글
[es] elasticsearch-head (1) | 2024.02.06 |
---|---|
[es] Full-cluster restart and rolling restart (0) | 2024.02.06 |
[es] multi_match 쿼리와 Lucene 쿼리 구조 (0) | 2023.11.28 |
[es] Elasticsearch Cache (2) | 2023.11.24 |
[es] aggs sort & cadinality (0) | 2023.11.17 |
Comments