【问题标题】:Serialize Haystack SearchQuerySet序列化 Haystack SearchQuerySet
【发布时间】:2016-10-12 17:34:35
【问题描述】:

我在延迟的文件中转储了一些 Django 查询,因此我将 sql_with_params 作为参数传递,以便稍后在延迟的 raw 查询中执行。

我已将所有查询迁移到 haystack,因此我不想对 SearchQuerySet 做同样的事情。

有什么方法可以获取已经构建好的 SearchQuerySet 的 raw_query 吗?

PD:我正在使用 ElasticSearch

【问题讨论】:

    标签: python django elasticsearch django-haystack


    【解决方案1】:

    当然,不幸的是,这是一种需要一些管道的方法。您可以创建自定义搜索引擎并将其查询设置为您自己的查询定义,继承自ElasticsearchSearchQuery

    from haystack.backends.elasticsearch_backend import ElasticsearchSearchEngine, ElasticsearchSearchQuery
    
    
    class ExtendedElasticsearchSearchQuery(ElasticsearchSearchQuery):
        def build_query(self):
            raw_query = super(ExtendedElasticsearchSearchQuery, self).build_query()
            # TODO: Do something with raw query
            return raw_query
    
    class ExtendedElasticsearchSearchEngine(ElasticsearchSearchEngine):
        query = ExtendedElasticsearchSearchQuery
    

    并从您的设置中引用它:

    HAYSTACK_CONNECTIONS = {
        'default': {
            'ENGINE': 'myapp.mymodule.ExtendedElasticsearchSearchEngine',
            'URL': 'http://localhost:9200/',
            'INDEX_NAME': 'haystack'
        },
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-11-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多