Elasticsearch 的 Python 客户端:tina
Elasticsearch 的 Python client,提供较为方便的查询语法。
Installation
$ git submodule add https://github.com/kelp404/tina.git $ git submodule add https://github.com/kelp404/elasticsearch-py.git $ pip3 install urllib3 $ pip3 install certifi $ pip3 install ujson
Django settings
# settings.py TINA_ELASTICSEARCH_URL = 'https://username:password@domain.com:9200' TINA_INDEX_PREFIX = 'prefix_' # The prefix of the index name.
Document
# example: from tina import db # define your data model class SampleModel(db.Document): _index = 'samples' # You can set index name by this attribute. name = db.StringProperty() email = db.StringProperty(required=True) is_vip = db.BooleanProperty(default=False) quota = db.FloatProperty(default=0.0) created_at = db.DateTimeProperty(auto_now=True)
Properties
_id: {string} _version: {int}
Methods def get(cls, ids, rev=None, db=None, dynamic_properties=True): """ Get documents by ids. :param ids: {list or string} The documents' id. :return: {list or Document} """ # example: # Get the document by the id. # The result document is SampleModel's instance. document = SampleModel.get('byMQ-ULRSJ291RG_eEwSfQ') # Get the documents by ids. # The result documents is the list. There are SampleModels' instance in the list. documents = SampleModel.get([ 'byMQ-ULRSJ291RG_eEwSfQ', 'byMQ-ULRSJ291RG_eEwSfc', ]) def exists(cls, id): """ Is the document exists? :param id: {string} The documents' id. :return: {bool} """ is_exist = SampleModel.exists('byMQ-ULRSJ291RG_eEwSfQ') def where(cls, *args, **kwargs): """ Intersect the query. :param args: The member's name of the document or the sub queries' lambda function. :param kwargs: [ unequal, equal, less, less_equal, greater, greater_equal, like, unlike, contains, exclude, ] :return: {tina.query.Query} """ def all(cls): """ The query for all documents. :return: {tina.query.Query} """ def refresh(cls): """ Explicitly refresh the index, making all operations performed """ def save(self, synchronized=False): """ Save the document. """ def delete(self, synchronized=False): """ Delete the document. """
</strong>