标签: django-haystack

安装django-haystack

超级简单的问题:我通过干草堆的"开始"文档(使用嗖!我使用pip安装了python-who和haystack(第一次使用它)),我根本无法运行python manage.py rebuild_index.我收到此错误:

python manage.py rebuild_index
Unknown command: 'rebuild_index'
Type 'manage.py help' for usage
Run Code Online (Sandbox Code Playgroud)

我在settings.py的INSTALLED_APPS中列出了'haystack',所以这个解决方案对我来说似乎不起作用.我运行"import haystack"时也没有导入导入错误,所以它确实存在.我在我现有的项目上尝试了这个,以及为此而制作的一个全新的对象,我无法让它工作.

但是,当我导入haystack后python manage.py shell,尝试haystack.__version__我得到"AttributeError:'module'对象没有属性' version '".如果我尝试,我会收到类似的错误haystack.management:它没有管理属性.

它一定是超级简单的东西,我很想念.谢谢您阅读此篇!

python django django-haystack

7
推荐指数
2
解决办法
4446
查看次数

与Solr的Django-Haystack包含搜索

haystack在一个项目中使用solr作为后端.我希望能够执行包含搜索,类似于Django.filter(something__contains="...")

__startswith选项不适合我们的需求,顾名思义,它会查找以字符串开头的单词.

我尝试使用类似的东西,*keyword*但Solr不允许将*其用作第一个字符

谢谢.

python django solr django-haystack

7
推荐指数
1
解决办法
2632
查看次数

Haystack与Django 1.4不兼容?

我刚刚将我的django升级到了1.4.我在干草堆应用程序遇到麻烦.此外,我试图更新haystack到最后的稳定版本,但我仍然有问题.有没有人有这些错误?我该如何解决?

我收到以下错误.

当我访问任何页面时:

cannot import name MAX_SHOW_ALL_ALLOWED haystack\admin.py in <module>, line 2
Run Code Online (Sandbox Code Playgroud)

# python manage.py rebuild_index
django.core.exceptions.ImproperlyConfigured: Error importing template source loader
django.template.loaders.app_directories.load_template_source:
    "'module' object has no attri bute 'load_template_source'"
Run Code Online (Sandbox Code Playgroud)

谢谢

django django-haystack

7
推荐指数
1
解决办法
2168
查看次数

如何解决涉及干草堆的循环导入?

草垛

haystack_signal_processor允许您使用自定义信号处理器来启动某些模型的索引.

我在我的settings.py中

HAYSTACK_SIGNAL_PROCESSOR='my_app.signals.MySignalProcessor'
(这是导入的signals.py.这是设置 - >信号)

然后我里面signals.py我有
from my_app.models import my_model#连接my_model
而my_app.models.py有from django.conf import settings
(信号- >模式- >设置)

如何解决此循环导入?

django import signals django-haystack

7
推荐指数
1
解决办法
569
查看次数

elasticsearch异常ConnectionError

我正在制作一个Django应用程序.它使用带有弹性搜索的Haystack作为后端.

我跑的时候

./manage.py rebuild_index
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

中止.',错误(61,'连接被拒绝')))由:ProtocolError(('Connection aborted.',error(61,'Connection refused')))

可能是什么导致了这个?

日志:

./manage.py rebuild_index
No handlers could be found for logger "django_facebook.models"

WARNING: This will irreparably remove EVERYTHING from your search index in connection 'default'.
Your choices after this are to restore from backups or rebuild via the `rebuild_index` command.
Are you sure you wish to continue? [y/N] y
Removing all documents from your index because you said so.
Failed to clear Elasticsearch index: ConnectionError(('Connection aborted.', error(61, 'Connection refused'))) caused by: ProtocolError(('Connection …
Run Code Online (Sandbox Code Playgroud)

python django django-haystack elasticsearch

7
推荐指数
1
解决办法
2万
查看次数

如何将单个对象添加到django haystack?

我有一个使用Solr创建的搜索索引.我想将单独的django对象添加到搜索索引中.

要从solr数据库中删除对象,我们使用remove_object.

some = SomFooModel.objects.get(pk=1)
foo = FooIndex()
foo.remove_object(some) #This works
Run Code Online (Sandbox Code Playgroud)

要添加它,是否有类似add_object或解决方法?

我想要的是.

foo.add_object(some). # there is no such thing 
Run Code Online (Sandbox Code Playgroud)

这也行不通.它不会将对象添加到索引中.

foo.update_object(some)
Run Code Online (Sandbox Code Playgroud)

我试过阅读django-haystack文档,但似乎没有任何可能有用的东西.

django solr django-haystack

7
推荐指数
1
解决办法
646
查看次数

是否可以禁用django haystack进行某些测试?

我们使用django-haystack作为搜索索引.通常很棒,但在测试期间,它会增加每个模型对象创建和保存的开销,并且对于大多数测试来说,它不是必需的.所以我想避免它.所以我想我会使用override_settings来使用一个什么都不做的假人.但我现在已经尝试过BaseSignalProcessorSimpleEngine和我一样,我仍然可以看到我们的搜索索引(elasticsearch)受到了很大的影响.

我试过的两个版本是:

首先使用没有数据准备的SimpleEngine:

from django.test import TestCase
from django.test.utils import override_settings

HAYSTACK_DUMMY_INDEX = {
    'default': {
        'ENGINE': 'haystack.backends.simple_backend.SimpleEngine',
    }
}

@override_settings(HAYSTACK_CONNECTIONS=HAYSTACK_DUMMY_INDEX)
class TestAllTheThings(TestCase):
    # ...
Run Code Online (Sandbox Code Playgroud)

然后使用BaseSignalProcessor,这意味着要保存的信号没有连接起来:

from django.test import TestCase
from django.test.utils import override_settings

@override_settings(HAYSTACK_SIGNAL_PROCESSOR='haystack.signals.BaseSignalProcessor')
class TestAllTheThings(TestCase):
    # ...
Run Code Online (Sandbox Code Playgroud)

我正在使用pytest作为测试运行器以防万一.

知道我有什么遗失的吗?

django unit-testing django-haystack

7
推荐指数
1
解决办法
556
查看次数

Django-Haystack使用Amazon Elasticsearch托管和IAM凭证

我希望使用亚马逊的Elasticsearch服务器来搜索Django数据库中的longtext字段.但是,我也不想将此搜索公开给那些没有登录并且不想通过默默无闻或某些IP限制策略依赖安全性的人(除非它适用于现有的heroku应用程序,部署Django应用程序的地方).

Haystack似乎对此有很长的路要走,但似乎没有一种简单的方法可以将其配置为使用Amazon的IAM凭证来访问Elasticsearch服务.这个功能确实存在于elasticsearch-py中,它使用它.

https://elasticsearch-py.readthedocs.org/en/master/#running-with-aws-elasticsearch-service

from elasticsearch import Elasticsearch, RequestsHttpConnection
from requests_aws4auth import AWS4Auth

host = 'YOURHOST.us-east-1.es.amazonaws.com'
awsauth = AWS4Auth(YOUR_ACCESS_KEY, YOUR_SECRET_KEY, REGION, 'es')

es = Elasticsearch(
    hosts=[{'host': host, 'port': 443}],
    http_auth=awsauth,
    use_ssl=True,
    verify_certs=True,
    connection_class=RequestsHttpConnection
)
print(es.info())
Run Code Online (Sandbox Code Playgroud)

关于使用HTTP授权,我在https://github.com/django-haystack/django-haystack/issues/1046上发现了这个问题.

from urlparse import urlparse
parsed = urlparse('https://user:pass@host:port')
HAYSTACK_CONNECTIONS = {
    'default': {
        'ENGINE': 'haystack.backends.elasticsearch_backend.ElasticsearchSearchEngine',
        'URL': parsed.hostname,
        'INDEX_NAME': 'haystack',
        'KWARGS': {
            'port': parsed.port,
            'http_auth': (parsed.username, parsed.password),
            'use_ssl': True,
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我想知道是否有办法将这两者结合起来,如下所示(正如预期的那样,它会产生错误,因为它不仅仅是用户名和密码):

from requests_aws4auth import AWS4Auth
awsauth = AWS4Auth([AACCESS_KEY],[SECRET_KEY],[REGION],'es')


HAYSTACK_CONNECTIONS = {
    'default': { …
Run Code Online (Sandbox Code Playgroud)

django heroku amazon-web-services django-haystack elasticsearch

7
推荐指数
1
解决办法
2166
查看次数

Django/Haystack错误:elasticsearch.exceptions.RequestError:TransportError(400,'parsing_exception',...)

我在我的Django项目中使用elasticsearch作为haystack的后端.我创建了一个搜索如前所述所需的一切在这里.但是当我搜索时,我会抛出TransportError错误(400,'parsing_exception','no [query]注册[filtered]').

我已经用Google搜索了这个问题.但是没有得到任何解决方案.我很乐意帮助我解决这个问题.

我的追溯:

Traceback (most recent call last):
  File "c:\python34\lib\site- packages\haystack\backends\elasticsearch_backend.py", line 524, in search
_source=True)
  File "c:\python34\lib\site-packages\elasticsearch\client\utils.py", line 71, in _wrapped
    return func(*args, params=params, **kwargs)
  File "c:\python34\lib\site-packages\elasticsearch\client\__init__.py", line 569, in search
    doc_type, '_search'), params=params, body=body)
 File "c:\python34\lib\site-packages\elasticsearch\transport.py", line 327, in perform_request
   status, headers, data = connection.perform_request(method, url, params, body, ignore=ignore, timeout=timeout)
  File "c:\python34\lib\site-packages\elasticsearch\connection\http_urllib3.py", line 124, in perform_request
    self._raise_error(response.status, raw_data)
  File "c:\python34\lib\site-packages\elasticsearch\connection\base.py", line 122, in _raise_error
    raise HTTP_EXCEPTIONS.get(status_code, TransportError)(status_code, error_message, additional_info)
elasticsearch.exceptions.RequestError: TransportError(400,  'parsing_exception', 'no [query] registered …
Run Code Online (Sandbox Code Playgroud)

python django django-haystack elasticsearch

7
推荐指数
1
解决办法
4293
查看次数

Django Haystack - ElasticSearch 结果窗口太大

我一直在研究使用 Django 开发的 Web 应用程序,它使用 Postgres 和 ElasticSearch。它使用 ElasticSearch,因为数据库存储了大量每小时增加的数据。为了让事情快速运行,我使用了 django-haystack 2.6.0,它允许我很容易地访问 Elastic Search。到现在为止还挺好。

问题出现在我在ElasticSearch上进行查询时,结果非常大。我得到的错误如下:

TransportError: TransportError(500, u'search_phase_execution_exception', u'Result window is too large, from + size must be less than or equal to: [10000] but was [12602]. 有关更有效的请求方式,请参阅滚动 api大型数据集。可以通过更改 [index.max_result_window] 索引级别参数来设置此限制。')

经过一些研究,我尝试增加结果窗口的大小,但从长远来看这不会起作用,因为查询集大小不断增加。此外 django-haystack 似乎没有实现滚动 api,所以我无法遵循堆栈跟踪中显示的建议。

我的问题是:无论如何我可以修复这个错误并使用 django-haystack 获取一个大查询集,也许可以以某种方式对结果进行分页?或者有没有更好的方法而不使用干草堆?

提前致谢!

python database django django-haystack elasticsearch

7
推荐指数
0
解决办法
445
查看次数