Ejemplo n.º 1
0
    def pre_index(self, *args, mode, **kwargs):

        client = AsyncElasticsearch(**self.es_client_args)
        try:
            if mode in ("index", None):

                # index MUST NOT exist
                # ----------------------

                if (yield from client.indices.exists(self.es_index_name)):
                    msg = (
                        "Index '%s' already exists, (use mode='purge' to "
                        "auto-delete it or mode='resume' to add more documents)"
                    )
                    raise IndexerException(msg % self.es_index_name)

            elif mode in ("resume", "merge"):

                # index MUST exist
                # ------------------

                if not (yield from client.indices.exists(self.es_index_name)):
                    raise IndexerException("'%s' does not exist." %
                                           self.es_index_name)
                self.logger.info(("Exists", self.es_index_name))
                return  # skip index creation

            elif mode == "purge":

                # index MAY exist
                # -----------------

                response = yield from client.indices.delete(
                    self.es_index_name, ignore_unavailable=True)
                self.logger.info(("Deleted", self.es_index_name, response))

            else:
                raise ValueError("Invalid mode: %s" % mode)

            response = yield from client.indices.create(
                self.es_index_name,
                body={
                    "settings": (yield from
                                 self.es_index_settings.finalize(client)),
                    "mappings": (yield from
                                 self.es_index_mappings.finalize(client))
                })
            self.logger.info(("Created", self.es_index_name, response))
            return {
                '__REPLACE__': True,
                'host':
                self.es_client_args.get('hosts'),  # for frontend display
                'environment': self.env_name,  # used in snapshot module.
            }

        finally:
            yield from client.close()
Ejemplo n.º 2
0
 def _validate_mapping():
     client = AsyncElasticsearch(**indexer.es_client_args)
     index_name = ("hub_tmp_%s" % get_random_string()).lower()
     try:
         return (yield from client.indices.create(
             index_name,
             body={
                 "settings":
                 (yield from
                  indexer.es_index_settings.finalize(client)),
                 "mappings":
                 (yield from indexer.es_index_mappings.finalize(client))
             }))
     finally:
         yield from client.indices.delete(index_name,
                                          ignore_unavailable=True)
         yield from client.close()
Ejemplo n.º 3
0
    results = await es.search(index=index_name,
                              body={
                                  "query": {
                                      "bool": {
                                          "filter": {
                                              "bool": {
                                                  "should": [{
                                                      "term": {
                                                          "position": 1
                                                      }
                                                  }, {
                                                      "term": {
                                                          "position": 2
                                                      }
                                                  }]
                                              }
                                          }
                                      }
                                  }
                              })
    pprint(results)

    await es.indices.delete(index_name)


if __name__ == "__main__":
    loop = asyncio.get_event_loop()
    loop.run_until_complete(main())
    loop.run_until_complete(es.close())