我正在处理干草堆elasticsearch 是否有可能拉出与此类mysql查询匹配的结果:

SELECT name, count(*) FROM article WHERE (here goes some where clause) GROUP BY name;

文章是一种汇总了用于搜索的所有信息的视图。 在此基础上,我编写了干草堆索引。 现在,在进行一些搜索之后,我想添加有关该搜索的其他摘要。

我找到了某种解决方案:

articles = SearchQuerySet().filter(some_custom_filter_options)

summary = articles.facet('name').facet_counts()['fields']['name']

不幸的是, facet 'fields'的长度限制为最多100个? 因为上层查询给了我100多行...

有什么办法可以实现? 我知道我可以使用简单的for循环来解析它,但是有时我会得到超过50k的结果。

===============>>#1 票数:1

Django干草堆支持多个后端,但不支持其所有功能。 Django干草堆不支持Elasticsearch Aggregations。 请参阅此功能请求

这就是为什么我本性地停止使用Haystack来使用elasticsearch -py充分利用elasticSearch的原因。

无论如何,使用Haystack,您可以通过两种方式进行聚合:

使用底层API

from haystack import connections

query = {
  "size": 0,
  "aggs": {
    "group_by_name": {
      "terms": {
        "field": "name"
      }
    }
  }
}

backend = connections.all()[0].get_backend()
raw_results = backend.conn.search(query, index=backend.index_name, doc_type='modelresult')
results = backend._process_results(raw_results)

有关ElasticSearch聚合Haystack ElasticSearch JSON查询的更多信息。

使用Hastack + Django ORM需再进行一次查询。

from django.db.models import Count

articles_id = SearchQuerySet().filter(some_custom_filter_options).values_list('id', flat=True)

articles = Article.objects.filter(id__in=articles_id).annotate(nb_article=Count('name'))

  ask by advena translate from so

未解决问题?本站智能推荐:

1回复

带有ElasticSearch / Django Haystack的单个用户自定义搜索引擎

我们正在编写一个django应用程序,该应用程序允许用户在彼此之间发送私人消息,以及将消息发送给群组,并且正在寻求实现针对每个用户的自定义搜索功能,以便每个用户只能搜索和查看消息他们已经收到了。 我们如何提供针对每个用户定制的搜索体验? 一些消息是作为一个组的一部分发送给成千上万个用户的
1回复

自定义视图不显示带有Elastic Search的Django Haystack中的结果

我开始在Elasticsearch中使用Django Haystack。 好的,直到我开始按照readthedocs中的简单示例制作“自定义视图”。 search_indexes.py: urls.py: 之前的urls.py(无自定义视图): views.p
2回复

用Django Haystack查询第二个模型

我想将第二个模型的字段添加到django-haystack查询中。 我有两个具有以下结构的模型: 我有以下search_index.py: 如何将Color模型的product_color添加到搜索索引中,以便如果有人在搜索查询中包含product_color一部分,它将返回与
1回复

使用Django Haystack仅匹配查询中的某些单词

我目前正在使用以下django-haystack代码在我的网站上进行搜索: 这使用q作为搜索中的查询参数。 这也使用q中的所有单词来匹配结果。 这可能是预期的默认行为。 这就是我所看到的。 我有一个Product与“红色克尔维特”的称号。 当然,搜索词“ Red”,“
2回复

Django-Haystack没有返回确切的查询

我正在努力修复我的Django-haystack和Elasticsearch搜索结果。 我现在遇到的问题是,当用户尝试例如“墨西哥”查询时,搜索结果也会返回“墨尔本”中的交易,这远非用户友好。 有人可以帮我解决这个问题吗? 这是我到目前为止尝试过但没有好结果: 我的for
1回复

Django / Haystack / Elasticsearch在不提供查询时显示所有结果

这是我在这里的第一篇文章,因此,如果我做了某些事情,我不应该说出来,而我会进行更改。 我目前正在与Django合作开发一个项目。 我被卡住了好几次,但是在stackoverflow上能够解决一些很棒的问题和解答。 我现在正无法独自解决这一问题,所以这里是一个问题: 我正在用hayst
1回复

Django Haystack + ElasticSearch分析器

所以基本上我想在Haystack的Elasticsearch后端中添加一个分析器,到目前为止我还没有运气。 我试图查询类似3/09.0TBOBR.C1 ,但出现很多错误。 有人告诉我分析器是解决我问题的方法,所以我尝试使用keyword分析器 我试过这样的: 我也在设置文件
1回复

Django Haystack对场的不同价值

我正在使用Django Haystack + Elasticsearch + Django REST Framework构建一个小型搜索引擎,我试图找出重现Django QuerySet的distinct方法的行为。 我的索引看起来像这样: 我希望能做的是以下内容: 但是,
2回复

Django Haystack内存错误

所以我用Django的草垛有弹性的搜索,而现在我试图rebuild_index或update_index为55149页的文件和我得到一个Memory Error 。 我认为这是因为它们文件太多,但是我仍然可以如何处理呢? 请不要,我希望索引约200.000个文件。
2回复

由于Django Haystack中的分页,对后端有多个请求

我正在使用Elasticsearch作为后端。 在我的一种观点中,我这样做是一个过滤器: 它返回了55个对象。 然后,我遍历for循环内的结果以对每个对象执行一些操作。 结果是预期的。 但是,当我查看elasticsearch的日志时,会看到类似以下的内容: