Wagtail 和 Elasticsearch,查找 "icontains" 不被识别
我正在尝试使用 Wagtail(5.2 版本)和 Elastic(7 版本)进行搜索。
当我搜索用户时,使用的链接是 wagtail_admin/users/?q=ffff
,结果出现了这样的错误:
FilterFieldError
Cannot filter search results with field "email". Please add index.FilterField('email') to User.search_fields
然后我在代码中添加了额外的搜索字段。
class User:
search_fields = [
index.SearchField("name", partial_match=True),
index.FilterField("email", partial_match=True),
]
但是又出现了另一个错误:
FilterError /wagtail_admin/users/
Could not apply filter on search results: "email__icontains = ffff". Lookup "icontains"" not recognised.
这个问题该怎么解决呢?
1 个回答
0
根据Wagtail的文档,如果你想进行全文搜索,需要使用SearchField
。你可以试着把index.FilterField
换成index.SearchField
:
class User:
search_fields = [
index.SearchField("name", partial_match=True),
index.SearchField("email", partial_match=True),
]