elasticsearch 학습 노트 (29) - 문자열 정렬 문제를 해결하기 위해field 인덱스를 두 번
4543 단어 elasticsearch
다음은 장면을 묘사한다
만약 어떤 필드의 형식이 텍스트라면, 색인을 만들 때, 모든 문서에 대응하는 이 텍스트 필드는 내용을 구분합니다.ES가 이미 존재하는field의 형식을 수정할 수 없기 때문에 이 필드는 항상 단어로 나뉘어져 있기 때문에 나중에 이 필드를 정렬할 필요가 있으면 안 됩니다.구체적으로 아래의 예시를 보아라.
PUT /test_index
{
"mappings": {
"properties": {
"field1": {
"type": "text"
}
}
}
}
GET /test_index/_search
{
"query": {
"match_all": {}
},
"sort": [
{
"field1": {
"order": "desc"
}
}
]
}
{
"error": {
"root_cause": [
{
"type": "illegal_argument_exception",
"reason": "Fielddata is disabled on text fields by default. Set fielddata=true on [field1] in order to load fielddata in memory by uninverting the inverted index. Note that this can however use significant memory. Alternatively use a keyword field instead."
}
],
"type": "search_phase_execution_exception",
"reason": "all shards failed",
"phase": "query",
"grouped": true,
"failed_shards": [
{
"shard": 0,
"index": "test_index",
"node": "P-b-TEvyQOylMyEcMEhApQ",
"reason": {
"type": "illegal_argument_exception",
"reason": "Fielddata is disabled on text fields by default. Set fielddata=true on [field1] in order to load fielddata in memory by uninverting the inverted index. Note that this can however use significant memory. Alternatively use a keyword field instead."
}
}
],
"caused_by": {
"type": "illegal_argument_exception",
"reason": "Fielddata is disabled on text fields by default. Set fielddata=true on [field1] in order to load fielddata in memory by uninverting the inverted index. Note that this can however use significant memory. Alternatively use a keyword field instead.",
"caused_by": {
"type": "illegal_argument_exception",
"reason": "Fielddata is disabled on text fields by default. Set fielddata=true on [field1] in order to load fielddata in memory by uninverting the inverted index. Note that this can however use significant memory. Alternatively use a keyword field instead."
}
}
},
"status": 400
}
이때 이 문제를 해결하려면stringfield를 두 번 인덱스로 만들 수 있습니다. 한 단어는 검색에 사용되고, 한 단어는 정렬에 사용되지 않습니다.Alternatively use a keyword field instead.오류의 알림에 따라 색인을 다시 만듭니다
PUT /test_index
{
"mappings": {
"properties": {
"field1": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword"
}
}
}
}
}
}
GET /test_index/_search
{
"query": {
"match_all": {}
},
"sort": [
{
"field1.keyword": {
"order": "desc"
}
}
]
}
{
"took" : 6,
"timed_out" : false,
"_shards" : {
"total" : 1,
"successful" : 1,
"skipped" : 0,
"failed" : 0
},
"hits" : {
"total" : {
"value" : 3,
"relation" : "eq"
},
"max_score" : null,
"hits" : [
{
"_index" : "test_index",
"_type" : "_doc",
"_id" : "3",
"_score" : null,
"_source" : {
"field1" : "third"
},
"sort" : [
"third"
]
},
{
"_index" : "test_index",
"_type" : "_doc",
"_id" : "2",
"_score" : null,
"_source" : {
"field1" : "second"
},
"sort" : [
"second"
]
},
{
"_index" : "test_index",
"_type" : "_doc",
"_id" : "1",
"_score" : null,
"_source" : {
"field1" : "one"
},
"sort" : [
"one"
]
}
]
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
kafka connect e elasticsearch를 관찰할 수 있습니다.No menu lateral do dashboard tem a opção de connectors onde ele mostra todos os clusters do kafka connect conectados atu...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.