ElasticSearch 검색 시 term 및 match 분사 여부에 따른 대소문자 문제
2292 단어 ElasticSearch
우선 키바나의 Dev Tools에 몇 개의 데이터를 삽입하고 맵핑이 정해지지 않으면 기본 동적 맵을 표시합니다
POST /stulib/items/_bulk
{"index": {"_id": 1}}
{"age": 11,"stuID": "STUID10010"}
{"index": {"_id": 2}}
{"age": 12,"stuID": "STUID10011"}
매핑 보기:
GET /stulib/_mapping
결과:
{
"stulib" : {
"mappings" : {
"items" : {
"properties" : {
"age" : {
"type" : "long"
},
"stuID" : {
"type" : "text",
"fields" : {
"keyword" : {
"type" : "keyword",
"ignore_above" : 256
}}}}}}}}
stuID가 분사를 사용한 것을 관찰할 수 있습니다. 이것은 stuID 값이 대문자가 있으면 소문자로 변환된다는 것을 의미합니다
1.term은 검색어를 구분하여 분석하지 않습니다(대문자는 대문자로 유지됨). 문서의 stuID 값과 구분된 소문자(STUID->stuid)가 일치하지 않기 때문에 내용을 찾을 수 없습니다
GET /stulib/items/_search
{
"query": {
"bool": {
"filter": [
{"term": {"stuID": "STUID10010" }}
]
}
}
}
결과가 비어 있음
2. match는 먼저 검색어를 구분하고 단어를 구분한 후 대문자로 소문자(STUID->stuid), 문서에 있는 stuID의 값으로 단어를 구분한 후의 소문자(STUID->stuid)와 일치하기 때문에 결과를 검색할 수 있습니다
GET /stulib/items/_search
{
"query":{
"bool":{
"filter": [
{"match": {"stuID": "STUID10010"}}
]
}
}
}
결과를 알아낼 수 있다
{
"took" : 1,
"timed_out" : false,
"_shards" : {
"total" : 5,
"successful" : 5,
"skipped" : 0,
"failed" : 0
},
"hits" : {
"total" : 1,
"max_score" : 0.0,
"hits" : [
{
"_index" : "stulib",
"_type" : "items",
"_id" : "1",
"_score" : 0.0,
"_source" : {
"age" : 11,
"stuID" : "STUID10010"
}
}
]
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
spring-data-elasticsearch 페이지 조회부록: 1. 이름에서 알 수 있듯이QueryBuilder는 검색 조건, 필터 조건을 구축하는 데 사용되고 SortBuilder는 정렬을 구축하는 데 사용된다. 예를 들어 우리는 어느 위치에서 100미터 범위 내의 모...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.