Skip to content

Conversation

@abdelslam1997
Copy link

Adding the fork below to your requirements.txt file can be a quick solution until this pull request is accepted

git+https://github.com/abdelslam1997/django-elasticsearch-dsl-drf.git@master

>>>
>>> model = Publisher # The model associate with this Document
"""
from elasticsearch_dsl.search import AggsProxy

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We (elasticsearch-dsl team @ Elastic) cannot guarantee that this will continue to work in future releases of elasticsearch-dsl. AggsProxy is an internal class of this package, not intended to be used externally. Also consider that with this change users will be required to upgrade to elasticsearch-dsl==8.13.1 as any older versions will not work anymore.

In 8.13.1 we have added an implementation of the EmptySearch class that we intend to maintain going forward. My suggestion for a fix is something like this:

try: # code for 8.13 (requires 8.13.1) from elasticsearch import EmptySearch except ImportError: # 8.12 and older # your definition of Empty Search here, including the original import of AggsProxy
Copy link

@millerf millerf Nov 24, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@miguelgrinberg I started implementing a solution in #319 .

However AggsProxy is used as well in another class. I am not sure how to tackle this one...

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@millerf I have missed that second usage. Unfortunately that one is more difficult, because it uses a few other private items in addtion to the AggsProxy instance. The whole idea of updating a Search instance in place goes against our design.

The two ways I can think of to "clean" one of these objects are:

  • Create a brand new instance of the same class
  • Run a query that is guaranteed to return no results
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@millerf I have missed that second usage. Unfortunately that one is more difficult, because it uses a few other private items in addtion to the AggsProxy instance. The whole idea of updating a Search instance in place goes against our design.

The two ways I can think of to "clean" one of these objects are:

  • Create a brand new instance of the same class
  • Run a query that is guaranteed to return no results

Unfortunately I don't know enough about this plugin to get to do that... I am hoping someone will be able to help...

@aabanaag
Copy link

aabanaag commented Jul 7, 2024

Can we have this implemented? I'm encountering this issue currently and would love to get it fixed

@millerf
Copy link

millerf commented Nov 24, 2024

See this approach that should be more future-proof (see this comment by Elastic team)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

4 participants