django - django_elasticsearch_dsl_drf 在带有空格的文本字段中搜索返回 null
问题描述
我的 Elasticsearch 中有以下索引:
"mappings": {
"properties": {
"content": {
"type": "text"
},
.
.
.
当我使用 kibana 控制台content
通过值在字段中搜索时This is
,它会返回内容中带有短语This is
的所有文档,但使用 django_elasticsearch_dsl_drf(和 django rest 框架)它什么都不返回,并且搜索只能通过没有空格的值进行,我的意思是如果我搜索This
它返回所需结果的单词。
我的文件:
@INDEX.doc_type
class PostDocument(Document):
content = fields.TextField()
...
我的序列化器:
class PostDocumentSerializer(DocumentSerializer):
"""Serializer for the Post document."""
content = serializers.CharField()
...
我的观点:
class PostDocumentView(DocumentViewSet):
document = PostDocument
serializer_class = PostDocumentSerializer
pagination_class = PageNumberPagination
filter_backends = [
FilteringFilterBackend,
IdsFilterBackend,
OrderingFilterBackend,
DefaultOrderingFilterBackend,
SearchFilterBackend,
SuggesterFilterBackend,
]
# Define search fields
search_fields = (
'content',
...
)
filter_fields = {
'content': {
'field': 'content',
'lookups': [
LOOKUP_QUERY_CONTAINS,
LOOKUP_QUERY_IN
]
},
}
并且要测试的 URL 是:
http://127.0.0.1:8000/social_networks/posts_search/?format=json&page=1&content=This is
解决方案
使用django-elasticsearch-dsl-drf.herokuapp.com作为游乐场。
用空间搜索对我有用。
Playground应用程序的源代码可以在 GitHub 上的barseghyanartur/django-elasticsearch-dsl-drf-heroku-demo上找到。
推荐阅读
- python - 如何过滤包含python中不同数据类型的列表中的整数
- python - 达到/设置某个值后如何重置 PYQT5 进度条?
- javascript - 错误:对象作为 React 子项无效。如果您打算渲染一组孩子,请改用数组
- reactjs - 反应重定向未正确加载页面
- tensorflow - 猜测用户是否会进行转化
- multithreading - 如何比较以前的列表并更新多线程中的字段
- mirth - 安装插件后 Mirth Service 未启动
- android - ConstraintLayout 不能与 Android XML Preview 中的其他类一起实例化
- java - Selenium:无法单击下拉列表中的第一项
- django - Django rest 框架 to_representation 必须实现