【问题标题】:Django elasticsearch dsl not identifying the index i have createdDjango elasticsearch dsl没有识别我创建的索引
【发布时间】:2020-07-30 15:23:24
【问题描述】:

我正在尝试在我的网站中实现弹性搜索。

问题:当我重建索引时,索引没有被识别。实际上它没有识别文件本身。这以前有效。但是现在我收到这样的提示:您确定要删除“ ”索引吗? [n/Y]

包:

弹性搜索版本:7.6.2 elasticsearch==7.6.0 elasticsearch-dsl==7.1.0 django-elasticsearch-dsl==7.1.1

我有几个问题: 1) 搜索后如何获取模型的url进行重定向? 2) 如何在文档中使用richtextfield? 3) 是否可以在一个文档中包含多个模型?

@registry.register_document
class AboutUsDocument(Document):
    class Index:
        name = 'aboutus'
        settings = {'number_of_shards': 1,
                    'number_of_replicas': 0}

    class Django:
        model = AboutUs 

        fields = ['our_story','second_section', 'third_section',
                  'fourth_section', 'five_section','published',
                 ]

【问题讨论】:

  • 创建新的搜索应用后,此问题已解决。我不知道这背后的原因。
  • 你能分享你的解决方案吗?
  • 我在其他此类帖子中阅读了相同的答案,但没有人解释此问题的实际原因。

标签: django elasticsearch indexing document elasticsearch-dsl


【解决方案1】:

您应该确保包含文档注册的python文件的名称为documents

因为库会在您的应用程序中查找该文件,如果您为其命名不同,库将无法识别它。

这是查找documents文件的行:

def autodiscover():
    autodiscover_modules('documents')

【讨论】:

  • 它对我有用。只是我有一个问题。我们可以覆盖这个函数来改变文件名吗?除了documents之外的其他东西?
【解决方案2】:

您应该在视图中定义您的搜索并调用您的文档 如果您只是创建文档并调用“python manage.py search_index --rebuild”,elasticsearch 无法识别您在文档文件中写入的索引。 但是,如果您在视图中定义类似“AboutUsDocument.search().query('match_all')”的搜索,elastichsearch 服务器可以自己编写索引。

【讨论】:

    猜你喜欢
    • 2020-07-22
    • 2019-03-29
    • 2017-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-06
    • 2020-08-29
    • 1970-01-01
    相关资源
    最近更新 更多