2017-03-13 5 views
2

mongoDB 데이터베이스에서 Kibana에 대시 보드를 설정하는 중에 문제가 있습니다.Mongodb 복합 색인에서 Kibana elasticsearch

복합 색인에 문제가 발생합니다. 나는 복합 인덱스 MongoDB를의 컬렉션이 : 나는 MongoDB를 문서의 _id 필드 안에 날짜를 사용하여 키바 대시 보드를 생성하기 위해 노력하고

sale : {"_id" : {"date" : Date, 
       "country" : String, 
       "game_id" : String }, 
     "field_1" : String, 
     "field_n" : String} 

.

mongo-connector elastic2를 사용하여 mongoDB 데이터베이스에 대한 키 바나에서 액세스하려면 문서뿐만 아니라 모든 키바 필드에서 모든 필드를 올바르게 볼 수 있으므로 모든 것이 작동하는 것 같습니다. 그러나 _id는 해석되지 않으며 3 개의 필드 대신 문자열로 나타납니다. 내가 원하는 무엇

_id:{'game_id': 'com.id.game', 'date': datetime.datetime(2016, 6, 22, 0, 0), 'country': 'DZ'} 

는이 문자열 (GAME_ID), 날짜 (날짜)와 문자열 (국가)이며, 키바가 _id는 문자열이 아닌 알 수 있도록하는 것입니다 그리고 나에게로 날짜 필드를 사용하자 지금까지는 성공하지 못했습니다.

아무도 어떻게해야합니까?, 대단히 감사드립니다.

+0

_id는 문서의 ID에 대한 키를 예약되어 있습니다. ES는이 필드에 대해 json 객체가 아닌 정수, 정수 유형을 허용합니다. – user3775217

+0

그렇기 때문에 날짜, 국가 및 game_id 구조가 일반 문자열로 변환되는 이유는 무엇입니까?하지만 필드 (날짜, 국가 및 게임 _ ID)를 다시 얻으려면 어떻게해야합니까?, – bracana

+0

다음지도를 제안합니다. _id 필드를 탄성의 다른 필드로 이동합니다. 내 대답을 확인하십시오 – user3775217

답변

2

탄성 _id의 공식 documentation에 따르면 각 문서의 고유 식별자를 나타내는 각 유형에 대해 예약 된 키워드입니다. _idex, _type, _uid와 함께 _id는 유형에 대해 meta-fields입니다.

_id json 개체를 유지하려면 mongo의이 _id를 here과 같은 유연한 네임 스페이스 구성을 사용하여 신축성있는 새로운 필드로 매핑 할 수 있습니다.

{ 
    "namespaces": { 
    "include": ["document_type._id"], 
    "mapping": { 
     "document_type._id": "document_type.mongo_id" 
    } 
    } 
} 

또는 명령

-n company.employees -g company.new_employees 같은 덕분에

+0

답변 해 주셔서 감사합니다. 귀하의 솔루션을 사용해 보았지만 그에 대한 의견이 두 개 있습니다. - 버전 2.5.0부터 사용되지 않을 것으로 보입니다. "네임 스페이스": { \t \t ". ._id": { "이름 바꾸기"- 가 나는 같은 뭔가가 v.2.5.0부터해야한다 방법으로 노력했다 ".. mongo_id " } \t} 하지만 그것은 일을 만들 수 없습니다, 그것은 매우 – bracana

+0

그래 내가 작년에 탄성 감가 상각 강 플러그인과의 지원 언젠가 remeber 감사합니다, 필드 컬렉션을 이름을 변경하지만 작동합니다. 나중에 다른 해결책을 제안하려고합니다. 감사합니다 – user3775217

+1

대단히 고맙습니다. 해결책과 비슷한 것을 얻었습니다. elastic2-doc-manager를 수정하는 것이지만 큰 문제는 아니지만 더 나은 해결책을 찾고 싶습니다. – bracana