1
ドキュメントを更新する(リストに要素を追加する)か、存在しない場合は作成しています。たとえば、リストsuggestions
の要素をまだ追加していない場合は、id == Donald_Duck
の文書にその要素を追加します。 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で同じコードを使用できますか?
はい、スクリプトが既に有効になっています。 – meto
あなたは 'text:suggestions'を意味すると思いますよね? – meto
はい、確かに編集しました –