상위/하위 문서 :Elasticsearch 지수 별칭 (w/라우팅) 나는 다음과 같은 특성을 가진 인덱스를 설정하기 위해 노력하고있어
- 인덱스 주택 데이터 많은 프로젝트. 대부분의 작업은 프로젝트마다 다르므로 project_id를 라우팅 필드로 사용하여 각 프로젝트의 별칭을 설정합니다. (관련 용어 필터로도 사용됩니다.)
- 해당 데이터에는 상위/하위 구조가 있습니다. 간단하게하기 위해, 문서 유형을 "mama"및 "baby"라고 부르 자.
curl -XDELETE http://localhost:9200/famtest curl -XPOST http://localhost:9200/famtest -d ' { "mappings" : { "mama" : { "properties" : { "project_id" : { "type" : "string", "index" : "not_analyzed" } } }, "baby" : { "_parent" : { "type" : "mama" }, "properties" : { "project_id" : { "type" : "string", "index" : "not_analyzed" } } } } }' curl -XPOST "http://localhost:9200/_aliases" -d ' { "actions": [ { "add": { "alias": "family1", "index": "famtest", "routing": "100", "filter": { "term": { "project_id": "100" } } } } ] }' curl -XPOST "http://localhost:9200/_aliases" -d ' { "actions": [ { "add": { "alias": "family2", "index": "famtest", "routing": "200", "filter": { "term": { "project_id": "200" } } } } ] }'
지금의 몇 가지 마마를 만들어 보자 :
curl -XPOST localhost:9200/family1/mama/1 -d '{ "name" : "Family 1 Mom", "project_id" : "100" }' curl -XPOST localhost:9200/family2/mama/2 -d '{ "name" : "Family 2 Mom", "project_id" : "200" }'
이 문서는 지금/familyX/_search 통해 사용할 수 있습니다
그래서 우리는 지수와 별칭을 만들 수 있습니다.
불행하게도curl -XPOST localhost:9200/family1/baby/1?parent=1 -d '{ "name": "Fam 1 Baby","project_id" : "100" }'
, ES가 좋아하지 않는다 :
{"error":"ElasticSearchIllegalArgumentException[Alias [family1] has index routing associated with it [100], and was provided with routing value [1], rejecting operation]","status":400}
을 그래서 ... 어떤 아이디어는 어떻게 별칭 라우팅을 사용하고 여전히 부모 ID를 설정 그래서 지금 우리는 아기를 추가하려면? 이 권리를 이해한다면 그것은 문제가되어서는 안됩니다. 모든 프로젝트 작업 (이 경우 "family1")이 별칭을 통과하므로 부모 및 자식 문서가 동일한 분할 문서에 보관됩니다. 라우팅을 방해하지 않고 상위 ID를 설정하는 다른 방법이 있습니까?
감사합니다. 내가 더 구체적 일 수 있는지 알려주십시오.
감사합니다. 솔루션에 대한 승인과 일반적인 확인을 위해 여기에 이상한 점이 있다는 표시로 표시합니다. 나는 GitHub에서 그것을 따라 할 것이다. – Erik
후속 조치를 위해 제기 된 문제는 [# 3068] (https://github.com/elasticsearch/elasticsearch/issues/3068)입니다. – ofavre