2016-09-07 1 views
0

두 인덱스에 걸쳐 자동 증가 정수 필드가 필요합니다.탄성 검색 : 두 인덱스에서 자동 증가 정수 필드

Can Elasticsearch는 자동으로 테이블의 MySQL "자동 증가"필드를 좋아합니까?

예 : 두 개의 서로 다른 인덱스에 일부 문서를 박았 때 :

POST /my_index_1/blogpost/ 
{ 
    "title": "Foo Bar" 
} 

POST /my_index_2/blogpost/ 
{ 
    "title": "Baz quux" 
} 

에 그것을 검색, 내가 원하는 :

GET /my_index_*/blogpost/ 
{ 
    "uid" : 1, 
    "title": "Foo Bar" 
}, 
{ 
    "uid" : 2, 
    "title": "Baz quux" 
} 
+1

[탄성 검색을 위해 자동 증분 ID를 얻는 방법] 가능한 복제본 (http://stackoverflow.com/questions/22471459/how-to-get-auto-increment-id-for-elasticsearch) – ruhungry

+0

왜 원하니? 자동 생성 된'_id' 필드를 사용합니다. 또한 독특합니다. @ ar099968 – hkulekci

+0

@hkulekci 이전 프로젝트를 이전 중이므로 기존 클라이언트를 지원해야합니다. – ar099968

답변

3
가 밖으로 파악, 분산 시스템이기 때문에

아니, ES는 자동 증가 기능이 없습니다 카운터에 대한 올바른 값은 중요하지 않습니다. 특히 (벌크) 인덱싱은 크게 동시에 발생하는 경향이 있습니다. 일반적으로 모든 노드에서 충분한 문서를 처리하면 CPU를 최대한 활용할 수 있습니다.

문서를 ES로 보내려면 먼저 ES 외부에서이 작업을 수행하는 것이 가장 좋습니다. 또는 더 나은, 이것을하지 마십시오. 일종의 삽입 순서가 필요한 경우 더 좋은 옵션은 단순히 타임 스탬프를 사용하는 것입니다. 실제로 내부적으로 숫자로 저장됩니다. 두 개의 문서에 동일한 밀리 초의 색인이 생성되는 경우에도 여전히 중복이 생길 수 있습니다. 이를 해결하기 위해 사용 된 트릭은 동시에 색인 된 문서를 1ms 씩 오프셋하는 것입니다. 게재 신청서를 보관할 수 있도록

+0

나는이 상황에서 1 개의 인덱서가 있다고 생각합니다. 여러 개의 인덱서가있는 경우 게재 신청서를 보관할 수 없습니다. – hkulekci

+0

실제로 충돌 가능성은 매우 적습니다. 일반적으로 그룹화에 관심이있는 문서는 한 서버에서 가져옵니다. 나는 당신이 정말로 카운터를 가지고 있다고 생각한다면, 당신은 어떤 종류의 분산 카운터를 만들 수 있습니다. redis 또는 관계형 db. 그러나 그것은 거의 확실하게 병목이 될 것입니다. –