Wagtail 和 Elasticsearch,查找 "icontains" 不被识别

0 投票
1 回答
18 浏览
提问于 2025-04-14 16:12

我正在尝试使用 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),
    ]

撰写回答