2017-09-11 9 views
0

일부 문서에서는 키가 school입니다. 문서가 다음과 같습니다.탄성 찾기 다른 키에 영향을주지 않고 단일 키를 삽입하십시오.

{ 
    "id" : "123", 
    "name" : "Robert", 
    "school" : "Public" 
} 

이제는 school이 모든 문서에 존재하지 않습니다. school 키가 이미 기본 문자열이없는 모든 문서에 삽입하려고합니다.

나는 Elasticsearch 버전 번호 2.4.5을 사용하고 있습니다. 내가 어떻게 해? 일괄 업데이트를보고 있습니까?

답변

0

분명히 이것을 위해 update by query API를 사용할 것입니다. 당신이 enable dynamic scripting 필요

POST your-index/your-type/_update_by_query 
{ 
    "query": { 
    "bool": { 
     "must_not": { 
     "exists": { 
      "field": "school" 
     } 
     } 
    } 
    }, 
    "script": { 
    "inline": "ctx._source.school = 'dummy'" 
    } 
} 

참고하여 ES 서버를 다시 시작 : 당신은 school 필드가 당신이 원하는대로 기본 값으로 설정하지 않는 모든 문서를 검색 할 수 있습니다.

+0

감사합니다. 나는 이것이 내가 원하는 것이라고 확신한다. 지금 당장'script_exception'에 직면하고 있으므로 인덱스에서'inline' 스크립트를 어떻게 활성화시킬 수 있는지 보겠습니다. 이 점에 대해 나에게 지적 해주기를 바랍니다. 그러나 OP가 확실하게 해결되고 데이터 업데이트에 성공하면 대답을 수락합니다. –

+0

좋은 지적, 그에 따라 답변을 업데이트했습니다. – Val

+0

이 방법으로 문제가 해결되지만 누군가가 '서버'에서 스크립트를 사용하고 싶지 않으면 어떤 이유로 든 가능합니까? 스크립트 사용에 대한 대안이 있습니까? –