우리는 Markdown 텍스트를 저장하기 위해 Django MarkupField을 사용하고 있습니다. 아주 잘 작동합니다.wagtail에서 사용자 정의 Django 모델 필드 인덱싱
File "/usr/local/lib/python3.5/dist-packages/wagtail/wagtailsearch/management/commands/update_index.py", line 120, in handle
self.update_backend(backend_name, schema_only=options.get('schema_only', False))
File "/usr/local/lib/python3.5/dist-packages/wagtail/wagtailsearch/management/commands/update_index.py", line 87, in update_backend
index.add_items(model, chunk)
File "/usr/local/lib/python3.5/dist-packages/wagtail/wagtailsearch/backends/elasticsearch.py", line 579, in add_items
bulk(self.es, actions)
File "/usr/local/lib/python3.5/dist-packages/elasticsearch/helpers/__init__.py", line 195, in bulk
for ok, item in streaming_bulk(client, actions, **kwargs):
File "/usr/local/lib/python3.5/dist-packages/elasticsearch/helpers/__init__.py", line 162, in streaming_bulk
for bulk_actions in _chunk_actions(actions, chunk_size, max_chunk_bytes, client.transport.serializer):
File "/usr/local/lib/python3.5/dist-packages/elasticsearch/helpers/__init__.py", line 61, in _chunk_actions
data = serializer.dumps(data)
File "/usr/local/lib/python3.5/dist-packages/elasticsearch/serializer.py", line 50, in dumps
raise SerializationError(data, e)
elasticsearch.exceptions.SerializationError: ({'_partials': [<markupfield.fields.Markup object at 0x7faa6e238e80>, <markupfield.fields.Markup object at 0x7faa6dbc4da0>], 'pk': '1', 'research_interests': <markupfield.fields.Markup object at 0x7faa6e238e80>, 'bio': <markupfield.fields.Markup object at 0x7faa6dbc4da0>}, TypeError("Unable to serialize <markupfield.fields.Markup object at 0x7faa6e238e80> (type: <class 'markupfield.fields.Markup'>)",))
한 가지 해결 방법은 field.raw
를 반환 인덱스 callables에 있지만 우리는 하나를 작성해야 할 것 : 우리가 인덱스하려고 할 때
그러나, 할미새에서 이러한 필드는 우리는 다음과 같이 Elasticsearch에서 직렬화 오류가 발생할 수 우리 모델에서 가지고있는 모든 Markdown 필드 속성에 대해 호출 할 수 있습니다. get_searchable_content(value)
메소드로 필드 속성 (즉, MarkupField
을 대체하는 django-markupfield Markup
클래스)을 확장하여이 문제를 해결할 수 있다고 생각했지만 직렬화 오류가 지속됩니다.
누구든지 Wagtail + elasticsearch에서 사용자 정의 Django 필드를 인덱싱하기위한 팁이 있습니까?