2017-05-11 9 views
1

탄성 검색 2.3. 조건에 따라 인덱스의 모든 문서를 업데이트하기 위해이 쿼리를 실행하고 있습니다.Elasticsearch의 조건부 업데이트 : "유효하지 않음 [없음]"

{ 
    "query": { 
    "bool": { 
     "must": [ 
     { 
      "match_all": {} 
     } 
     ] 
    } 
    }, 
    "script": { 
    "inline": "if (ctx._source.url.endsWith('a=6')) ctx.op = 'none' else ctx._source.url = ctx._source.url + '&b=3'" 
    } 
} 

으로 내가 조건에 일치하지 않는 문서를 업데이트하지 않도록 ctx.op = 'none'을 사용하고, here 말했다.

나는

Invalid op [none]

전체 오류가 점점 오전 :

"error": { 
"root_cause": [ 
{ 
"type": "illegal_argument_exception", 
"reason": "Invalid op [none]" 
} 
], 
"type": "illegal_argument_exception", 
"reason": "Invalid op [none]" 
}, 
"status": 400 

내가 꽤 분실하고 너무 단순하게 보인다. 당신의 도움을 주셔서 감사합니다.

답변

3

올바른 작업은 noop이 아니라 none이 아닙니다. the documentation에서

:

Just as in Update API you can set ctx.op = "noop" if your script decides that it doesn’t have to make any changes. That will cause _update_by_query to omit that document from its updates.

PR 생성 : https://github.com/elastic/elasticsearch/pull/24613

+0

감사합니다. 지금 일하고있는 것 같습니다. 위의 2.3 참조 문서는 어떻게 든 잘못되었거나 모호합니다. – AitorF

+0

문서 자체는 괜찮습니다. 예제 만 잘못되었습니다 (이전 버전). –