Elasticsearch: search does not return documents

Viewed 18

When I run the following:

search_doc = Document.search(
        using=client, 
        index=custom_index
)

search_doc = search_doc.query("term", doc_field = f"string_{num}")

and then use .scan() I get Hit objects. So, something seems to be wrong... However, when I use the ids of those hit objects:

all_docs = [doc.meta.id for doc in search_doc.scan()] 
for id in all_docs:
  loc = Document.get(
                  using=client, 
                   index=custom_index,
                  id = id
          )
 assert isinstance(doc, Document) # <- always true!!

Why is there this difference? Why doesn't the search object return documents objects?

Here's the definition of my Document class:

field_1 = dsl.Keyword()
field_2 = dsl.Keyword(multi=True)
data = dsl.Object(Inner_Document) # data will have many other fields
last_updated = dsl.Date()

 class Index:
     name = default_index # different from custom_index
     settings = {
       "number_of_shards": 1
     }
  class Meta:
    dynamic = dsl.MetaField('strict')

The version of ES that I'm using is 7.17.6 . The package elasticsearch is 7.17.3 and elasticsearch-dsl is 7.4.0 .

0 Answers
Related