使用django-elasticsearch-dsl重建索引时出错

时间:2018-10-25 02:55:16

标签: django elasticsearch

我正在尝试连接到本地弹性搜索引擎中的现有索引。 我正在使用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/网站

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/网站

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 

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

1 个答案:

答案 0 :(得分:0)

我知道这很晚。但是,我认为我应该回答自己的问题,以便任何人面对相同的问题,都可以解决。

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

我不是Django或Elastic Search的专家。因此,我无法解释为什么它不能像以前的尝试那样起作用。我希望这会对遇到这种情况的任何人有所帮助。