code: def run_query(
      self,
      index_name,
      search_query,
      max_documents=5,
      fragment_size=100,
      relsnip=True,
      num_fragments=5,
      highlight_tags=True,
  ):
      tags = (
          {"pre_tags": [""], "post_tags": [""]}
          if not highlight_tags
          else {}
      )
      highlight_params = {
          "fragment_size": fragment_size,
          "fields": {self.body_field: tags},
          "number_of_fragments": num_fragments,
      }
  
      search_query = {
          "_source": {"includes": [self.body_field]},
          "query": {
              "multi_match": {
                  "query": search_query,
                  "fields": [self.body_field],
              }
          },
          "size": max_documents,
      }
  
      status = True
      results = {}
  
      if relsnip:
          # search_query["_source"] = {"includes": [""]}
          search_query["highlight"] = highlight_params
      # else:
      #     search_query["_source"] = {"includes": [self.body_field]}
  
      try:
          query_result = self.es.search(
              index=index_name, body=search_query
          )
  
          # RelSnip: for each document, we concatenate all
          # fragments in each document and return as the document.
          highlights = [
              " ".join(hit["highlight"][self.body_field])
              for hit in query_result["hits"]["hits"]
              if "highlight" in hit
          ]
          docs = [
              parse_field_content(self.body_field, hit["_source"])
              for hit in query_result["hits"]["hits"]
              if "_source" in hit
          ]
          took = query_result["took"]
          results = {
              "took": took,
              "highlights": highlights,
              "docs": docs,
          }
  
      except (ConnectionRefusedError, NotFoundError, Exception) as e:
          status = False
          results["errormsg"] = str(e)
  
      results["status"] = status
      return results
  
file_path: neuralqa/neuralqa/retriever/elasticsearchretriever.py
imports: from neuralqa.retriever import Retriever
  from neuralqa.utils import parse_field_content
  from elasticsearch import Elasticsearch, ConnectionError, NotFoundError
  import logging
label_desc: Use image node_id 2 for calling the ElasticSearchRetriever obj's underlying member method code with example usage: obj.run_query(index_name, search_query, max_documents, fragment_size, relsnip, num_fragments, highlight_tags) and returns: results