我正在尝试连接到本地弹性搜索引擎中的现有索引。 我正在使用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
任何帮助将不胜感激。谢谢
答案 0 :(得分:0)
我知道这很晚。但是,我认为我应该回答自己的问题,以便任何人面对相同的问题,都可以解决。
我为Elastic搜索组件创建了另一个App。是的,我在同一项目下创建了另一个App。我遵循了本教程https://pypi.org/project/django-elasticsearch-dsl/ 然后,我从网站App的views.py调用了Elasticsearch视图函数。现在,它可以完美运行。
我不是Django或Elastic Search的专家。因此,我无法解释为什么它不能像以前的尝试那样起作用。我希望这会对遇到这种情况的任何人有所帮助。