1
문서를 업데이트하려고합니다 (목록에 요소를 추가 함). 존재하지 않는 경우 문서를 만들려고합니다. 예를 들어, id == Donald_Duck
인 문서에 목록 suggestions
의 요소를 추가하고 싶으면 이미 추가하고 싶습니다. Python API를 사용하여 ElasticSearch 문서를 조건부로 업데이트하십시오.
name = 'Donald_Duck'
suggestions = ['Donald', 'Donald duck', 'Duck', 'Duck Avanger']
body = {
"script" : "ctx._source.text += new_suggetions",
"params" : { "new_suggestions" : suggestions},
"upsert" : suggestions
}
es.update(index=INDEX_NAME, doc_type='test', id=name, body=body)
불행하게도 내가 얻을
RequestError
:
RequestError: TransportError(400, 'mapper_parsing_exception', 'failed to parse')
이 내 매핑과 같은 모습입니다 :
mappings = {
"mappings": {
"test": {
"properties": {
"text": {
"type": "completion",
"analyzer" : "simple",
"search_analyzer" : "simple"
},
}
}
}
}
가 어떻게이 문제를 해결할 수 있습니까? 문서가 여러 개있는 경우 동일한 코드를 bulk
API와 함께 사용할 수 있습니까?
body = {
"script": "ctx._source.text += new_suggestions",
"params": { "new_suggestions" : suggestions},
"upsert": {
"text": suggestions
}
}
게다가, 당신은 당신이 업데이트에 대한 스크립팅을 사용하도록 설정 한 확신 :
예, 스크립팅이 이미 가능합니다. 확인해 주셔서 감사합니다. – meto
'텍스트 : 제안'이라고 생각 하시겠습니까? – meto
예, 실제로 편집했습니다. –