Elasticsearch 확장 단어 후 색인 변경
2467 단어 Elasticsearch분사기
단어 확장 도입 문제 해결
일단 효과를 볼게요.
GET /operation/_search
{
"query": {
"match": {
"store_name": " "
}
}
}
결과
{
"took" : 38,
"timed_out" : false,
"_shards" : {
"total" : 3,
"successful" : 3,
"skipped" : 0,
"failed" : 0
},
"hits" : {
"total" : {
"value" : 0,
"relation" : "eq"
},
"max_score" : null,
"hits" : [ ]
}
}
이때의 분사기는
두 글자에 대한 분사는 다음과 같다.{
"tokens" : [
{
"token" : " ",
"start_offset" : 0,
"end_offset" : 2,
"type" : "CN_WORD",
"position" : 0
}
]
}
우리의 인덱스는 만들 때
단어가 확장되지 않았기 때문에 인덱스를 만들 때 분사기는
와
두 글자로 나뉘는데, 이때 분사기는
단어를 한 단어
로 나누어 문서를 검색할 수 없습니다.해결 방법 1:
먼저 떠오르는 것은 색인을 재구성하는 것이다. 왜냐하면 이때 분사기 사전에는 이미
라는 단어가 있기 때문이다. 그리고 문서를 전량으로 복사해서 새로운 색인에 넣는다. 데이터의 양이 크지 않은 상황에서 신속하게 옮길 수 있기 때문이다. 데이터의 양이 많으면 이렇게 하는 것을 권장하지 않는다. 그러나 일부 문서는 확장할 단어와 관련이 있을 수 있기 때문에 이 방법은 비교적 서툴기 때문에 사용을 권장하지 않는다.해결 방법 2:
공식 API 인터페이스Elasticsearch
를 통해 update_by_query
와 관련된 문서를 다시 구분할 수 있음구체적인 조작은 다음과 같다.
POST /operation/_update_by_query
{
"query": {
"bool": {
"must": [
{"term": {"store_name": " "}},
{"term": {"store_name": " "}}
]
}
}
}
위의 두 조건을 충족해야 문서를 읽어들이고 단어 수정을 할 수 있다는 뜻입니다. 즉, 문서 이름에
및
이 동시에 포함되어야 단어를 다시 구분할 수 있습니다.실행 결과
{
"took" : 240,
"timed_out" : false,
"total" : 4,
"updated" : 4,
"deleted" : 0,
"batches" : 1,
"version_conflicts" : 0,
"noops" : 0,
"retries" : {
"bulk" : 0,
"search" : 0
},
"throttled_millis" : 0,
"requests_per_second" : -1.0,
"throttled_until_millis" : 0,
"failures" : [ ]
}
네 개의 문서가 수정된 것을 볼 수 있다
다시
검색을 통해 품질보증
또는
문서가 없습니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Embulk를 사용하여 ElasticCloud로 보내기Embulk에서 ElasticCloud에 보낼 수 있을까라고 생각비망록도 겸해 기술을 남깁니다 Embulk 설치 ElasticCloud (14 일 체험판) brew라면 아래 명령 입력 파일 만들기 파일 내용 seed...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.