首页 > 解决方案 > 使用 django-elasticsearch-dsl 重建索引时出错

问题描述

我正在尝试连接到本地弹性搜索引擎中的现有索引。我正在使用 django-elasticsearch-dsl 包。我按照本教程来做到这一点。https://github.com/sabricot/django-elasticsearch-dsl

请注意,我已经使用 mysql 数据库开发了我的 django 应用程序[网站]。我在弹性搜索中索引了一些非结构化文本数据。我想为查询数据 frpm elasticsearch 的用户开发这个“高级搜索”HTML 页面。

我几乎跟踪了所有内容 python manage.py search_index --rebuild,但是一旦我执行它,它就会问你是什么sure you want to delete the 'website_data_discovery' indexes? [n/Y]:时候我说它n会被中止。当我说它Y给出了一个冗长的错误说django.db.utils.ProgrammingError: Table 'crdc.website_data_discovery' doesn't exist

这是我的文件结构。

crdc
website 
         ->__pycache__
         ->  media
         ->migrations
         ->static
         ->templates
         ->__init__.py
         ->admin.py
         ->apps.py
         ->documnets.py
         ->forms.py
         ->models.py
         ->tests.py
         ->urls.py
         ->views.py
manage.py

这是我的 settings.py/crdc。

###more codes here
INSTALLED_APPS = [
    'website.apps.WebsiteConfig',
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'django_elasticsearch_dsl',

]

ELASTICSEARCH_DSL={
    'default': {
        'hosts': 'localhost:9200'
    },
}
###more codes here

这是documents.py/website

from django_elasticsearch_dsl import DocType, Index
from .models import Data_Discovery

data_discovery = Index('website_data_discovery')
data_discovery.settings( number_of_shards = 5, number_of_replicas = 1,)

@data_discovery.doc_type
class Data_DiscoveryDocument(DocType):
    class Meta:
        model = Data_Discovery
        fields = ['extracted_text',  'source_type']

这是models.py/website

from django.db import models

class WebsiteRepository(models.Model):
 ##### mysql model 

class Documents(models.Model):
 #### mysql model

class Data_Deposite(models.Model):
#### mysql model


class Data_Discovery(models.Model):
## Elasticsearch model 

任何帮助将不胜感激。谢谢

标签: djangoelasticsearch

解决方案


我知道这已经晚了。但是,我想我应该回答我自己的问题,这样任何人都面临同样的问题,可以弄清楚。

我为弹性搜索组件创建了另一个应用程序。是的,我在同一个项目下创建了另一个应用程序。我遵循了本教程https://pypi.org/project/django-elasticsearch-dsl/ 然后我从网站 App 调用了 views.py 中的 Elasticsearch 视图函数。它现在完美运行。

我不是 Django 或 Elastic Search 方面的专家。所以,我无法解释为什么它不像以前的尝试那样工作。我希望这对遇到这种情况的人有所帮助。


推荐阅读