esis package¶
Submodules¶
esis.cli module¶
Command Line Interface.
-
esis.cli.
configure_logging
(log_level)[source]¶ Configure logging based on command line argument.
Parameters: log_level (int) – Log level passed form the command line
esis.db module¶
Database related tools.
-
class
esis.db.
DBReader
(database)[source]¶ Bases:
object
Iterate through all db tables and rows easily.
Parameters: database (esis.db.Database) – Database to traverse -
FTS_SUFFIXES
= ('content', 'segdir', 'segments', 'stat', 'docsize')¶
-
-
class
esis.db.
Database
(db_filename)[source]¶ Bases:
object
Generic database object.
Parameters: db_filename (str) – Path to the sqlite database file
-
class
esis.db.
DatetimeDecorator
(*args, **kwargs)[source]¶ Bases:
sqlalchemy.sql.type_api.TypeDecorator
A datetime class that translates data to ISO strings.
The reason ISO strings are used instead of datetime objects or integer timestamps is because is what elasticsearch handles as a datetime value. Internally it seems to store it as an integer timestamp, but that’s transparent to the user.
-
impl
¶ alias of
TEXT
-
-
class
esis.db.
IntegerDecorator
(*args, **kwargs)[source]¶ Bases:
sqlalchemy.sql.type_api.TypeDecorator
An integer class that translates ‘null’ values to None.
This is needed because some tables use ‘null’ instead of NULL and elastic search fails to index documents with strings where integers should be found.
-
impl
¶ alias of
INTEGER
-
-
class
esis.db.
TableReader
(database, table_name)[source]¶ Bases:
esis.db.TypeCoercionMixin
Iterate over all rows easily.
Parameters: - database (esis.db.Database) – Database being explored
- table (sqlalchemy.sql.schema.Table) – Database table
-
class
esis.db.
TypeCoercionMixin
[source]¶ Bases:
object
A mixin to transform database values.
This is useful to get safe values from sqlalchemy when data types are not very well defined in SQLite.
-
COERCIONS
= {<class 'sqlalchemy.sql.sqltypes.BOOLEAN'>: <class 'esis.db.IntegerDecorator'>, <class 'sqlalchemy.sql.sqltypes.TIMESTAMP'>: <class 'esis.db.DatetimeDecorator'>, <class 'sqlalchemy.sql.sqltypes.NUMERIC'>: <class 'sqlalchemy.sql.sqltypes.TEXT'>, <class 'sqlalchemy.sql.sqltypes.DATE'>: <class 'esis.db.DatetimeDecorator'>, <class 'sqlalchemy.sql.sqltypes.BIGINT'>: <class 'esis.db.IntegerDecorator'>, <class 'sqlalchemy.sql.sqltypes.INTEGER'>: <class 'esis.db.IntegerDecorator'>, <class 'sqlalchemy.sql.sqltypes.DATETIME'>: <class 'esis.db.DatetimeDecorator'>, <class 'sqlalchemy.sql.sqltypes.SMALLINT'>: <class 'esis.db.IntegerDecorator'>}¶
-
esis.es module¶
Elasticsearch related funcionality.
-
class
esis.es.
Client
(host, port)[source]¶ Bases:
object
Elasticsearch client wrapper.
Parameters: - host (str) – Elasticsearch host
- port (int) – Elasticsearch port
-
INDEX_NAME
= 'sqlite'¶
-
count
()[source]¶ Return indexed documents information.
Returns: Indexed documents information Return type: dict
-
class
esis.es.
Mapping
(document_type, table_schema)[source]¶ Bases:
object
ElasticSearch mapping.
Parameters: - document_type (str) – Document type user for the database table
- table_schema (dict(str, sqlalchemy.types.*)) – Database table schema from sqlalchemy
-
SQL_TYPE_MAPPING
= {<class 'sqlalchemy.sql.sqltypes.SMALLINT'>: 'integer', <class 'sqlalchemy.sql.sqltypes.DATETIME'>: 'date', <class 'sqlalchemy.sql.sqltypes.VARCHAR'>: 'string', <class 'sqlalchemy.sql.sqltypes.CHAR'>: 'string', <class 'sqlalchemy.sql.sqltypes.CLOB'>: 'string', <class 'sqlalchemy.sql.sqltypes.NullType'>: None, <class 'sqlalchemy.sql.sqltypes.BIGINT'>: 'long', <class 'sqlalchemy.sql.sqltypes.NCHAR'>: 'string', <class 'sqlalchemy.sql.sqltypes.INTEGER'>: 'long', <class 'sqlalchemy.sql.sqltypes.REAL'>: 'double', <class 'sqlalchemy.sql.sqltypes.BOOLEAN'>: 'boolean', <class 'sqlalchemy.sql.sqltypes.TIMESTAMP'>: 'date', <class 'sqlalchemy.sql.sqltypes.NUMERIC'>: None, <class 'sqlalchemy.sql.sqltypes.DECIMAL'>: None, <class 'sqlalchemy.sql.sqltypes.NVARCHAR'>: 'string', <class 'sqlalchemy.sql.sqltypes.FLOAT'>: 'float', <class 'sqlalchemy.sql.sqltypes.TIME'>: 'date', <class 'sqlalchemy.sql.sqltypes.DATE'>: None, <class 'sqlalchemy.sql.sqltypes.TEXT'>: 'string'}¶
-
esis.es.
get_document
(db_filename, table_name, row)[source]¶ Get document to be indexed from row.
Parameters: - db_filename (str) – Path to the database file
- table_name – Database table name
- row (sqlalchemy.engine.result.RowProxy) – Database row
-
esis.es.
get_index_action
(index_name, document_type, document)[source]¶ Generate index action for a given document.
Parameters: - index_name (str) – Elasticsearch index to use
- document_type – Elasticsearch document type to use
- document – Document to be indexed
Returns: Action to be passed in bulk request
Return type: dict
esis.fs module¶
Filesystem functionality.
esis.util module¶
Utility functionality.
Module contents¶
Elastic Search Index & Search.