{ "info": { "author": "ytyng", "author_email": "ytyng@live.jp", "bugtrack_url": null, "classifiers": [], "description": "django-elasticindex\n~~~~~~~~~~~~~~~~~~~\n\nDjango\u7528 Elasticsearch \u306e\u8584\u3044\u30e9\u30c3\u30d1\u30fc\n\n\n\u3067\u304d\u308b\u3053\u3068\n=====\n\n\u30fbDjango \u30e2\u30c7\u30eb\u3068\u5bfe\u5fdc\u3055\u305b\u3001Elasticsearch \u306b\u30c7\u30fc\u30bf\u3092\u6d41\u3057\u8fbc\u3080\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\n\n(\u30e2\u30c7\u30eb\u3068\u306e\u5bfe\u5fdc\u306f\u5fc5\u9808\u3067\u306f\u3042\u308a\u307e\u305b\u3093)\n\n\u30fbDjango\u30af\u30a8\u30ea\u30bb\u30c3\u30c8\u306b\u5c11\u3057\u8fd1\u3044\u5f62\u5f0f\u3067\u3001\u30af\u30a8\u30ea\u3092\u767a\u884c\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\n\n\u30af\u30a8\u30ea\u306b\u306f Elasticsearch \u306e\u30af\u30a8\u30ea\u306b\u7528\u3044\u308b\u305f\u3081\u306e\u8f9e\u66f8\u3092\u305d\u306e\u307e\u307e\u7528\u3044\u308b\u3001\n\u3042\u307e\u308a\u5206\u539a\u304f\u306a\u3044(\u304a\u7bc0\u4ecb\u306e\u5c11\u306a\u3044)\u30a4\u30f3\u30bf\u30fc\u30d5\u30a7\u30a4\u30b9\u3068\u306a\u3063\u3066\u3044\u307e\u3059\u3002\n\n\n\nInstall\n=======\n::\n\n $ pip install django-elasticindex\n\n\n\u30b5\u30f3\u30d7\u30eb\u30b3\u30fc\u30c9\n=======\n\n\u30ea\u30dd\u30b8\u30c8\u30ea\u5185\u306e\u3001tests \u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306b\u52d5\u4f5c\u3059\u308b\u30b3\u30fc\u30c9\u304c\u3042\u308a\u307e\u3059\u3002\n\n1. Django\u306e\u30e2\u30c7\u30eb\u306e\u5b9a\u7fa9\n----------------\n\nmodels.py\n::\n\n from django.db import models\n\n class DummyModel(models.Model):\n key = models.CharField(max_length=20, primary_key=True)\n value = models.TextField()\n\n\n2. ElasticDocument \u30af\u30e9\u30b9\u306e\u5b9a\u7fa9\n-------------------------\n\n::\n\n from elasticindex.models import ElasticDocument, ElasticDocumentField as F\n\n class DummyESDocument(ElasticDocument):\n INDEX = \"elasticindex_test\"\n DOC_TYPE = \"elasticindex_test_doc\"\n ALLOW_KUROMOJI = False\n\n source_model = DummyModel\n\n key = F(mapping={\"type\": \"string\", \"index\": \"not_analized\"})\n value = F(mapping={\"type\": \"string\"})\n\n\n3. \u30c7\u30fc\u30bf\u6d41\u3057\u8fbc\u307f\u30d0\u30c3\u30c1\n-------------\n\n::\n\n DummyESDocument.rebuild_index()\n\nrebuild_index() \u3092\u5b9f\u884c\u3059\u308b\u3068\u3001Elasticsearch \u4e0a\u306b\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3092\u4f5c\u6210\u3057(\u5b58\u5728\u3057\u306a\u3044\u5834\u5408)\u3001\n\u5bfe\u5fdc\u3059\u308bDjango \u30e2\u30c7\u30eb ( DummyModel ) \u306e\u5168\u30c7\u30fc\u30bf\u3092 DB \u304b\u3089\u8aad\u307f\u51fa\u3057\u3001Elasticsearch \u306b\u5165\u308c\u307e\u3059\u3002\n\n\n3-1. \u7279\u5b9a\u306e\u30e2\u30c7\u30eb\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u306e\u30c7\u30fc\u30bf\u3092\u5165\u308c\u308b\n\n::\n\n i = DummyModel.objects.get(key=\"xxx\")\n DummyESDocument.rebuild_index_by_source_model(i)\n\n\u3053\u308c\u3067\u30011\u30ec\u30b3\u30fc\u30c9\u306e\u66f4\u65b0\u304c\u3067\u304d\u307e\u3059\n\n\n4. \u691c\u7d22\n-----\n\n4-1. \u30b7\u30f3\u30d7\u30eb\u306a\u691c\u7d22\n\n::\n\n results = DummyESDocument.objects.query({\"match\": {\"key\": \"jumps\"}})\n\nresults \u306f\u3001ElasticQuerySet \u306e\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u3067\u3059\u3002\n\n::\n\n result = list(results)[0]\n\n\u691c\u7d22\u3092\u884c\u3044\u3001result \u306b\u306f DummyESDocument \u306e\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u304c\u5165\u308a\u307e\u3059\u3002\n\n\n4-2. OR\u691c\u7d22\n\n::\n\n qs = DummyESDocument.objects.query(\n {\"bool\": {\n \"should\": [\n {\"match\": {\"value\": \"dogs\"}},\n {\"match\": {\"value\": \"fox\"}},\n\n ]}})\n\nquery \u306f Elasticsearch \u306e query \u3092\u305d\u306e\u307e\u307e\u4f7f\u3044\u307e\u3059\u3002\n\n\n4-3. \u30bd\u30fc\u30c8\u9806\u5909\u66f4\n\n::\n\n qs = DummyESDocument.objects.query({...})\n qs = qs.order_by({\"key\": \"desc\"})\n\nDjango \u306e\u30af\u30a8\u30ea\u30bb\u30c3\u30c8\u306e\u3088\u3046\u306b\u3001order_by \u3092\u30e1\u30bd\u30c3\u30c9\u30c1\u30a7\u30fc\u30f3\u3057\u3066\u304f\u3060\u3055\u3044\u3002\n\n\n4-4. \u7d50\u679c\u306e\u30b9\u30e9\u30a4\u30b7\u30f3\u30b0\n\n::\n\n qs = DummyESDocument.objects.query({...})\n results = qs[:100]\n\n\u3053\u3061\u3089\u3082\u3001Django\u306e\u30af\u30a8\u30ea\u30bb\u30c3\u30c8\u306e\u3088\u3046\u306b\u3001Python \u306e\u30b9\u30e9\u30a4\u30b7\u30f3\u30b0\u3092\u884c\u3046\u3068\u7bc4\u56f2\u6307\u5b9a\u3067\u304d\u307e\u3059\u3002\n\u5b9f\u884c\u3057\u305f\u30bf\u30a4\u30df\u30f3\u30b0\u3067\u30af\u30a8\u30ea\u304c\u8a55\u4fa1\u3055\u308c\u3001HTTP\u30ea\u30af\u30a8\u30b9\u30c8\u304c\u767a\u884c\u3055\u308c\u307e\u3059\u3002\n\n\u307e\u305f\u3001.limit(), .offset() \u3068\u3044\u3046\u30e1\u30bd\u30c3\u30c9\u3082\u3042\u308a\u3001\u30e1\u30bd\u30c3\u30c9\u30c1\u30a7\u30fc\u30f3\u3067\u4f7f\u3048\u307e\u3059\u3002\n\n::\n\n qs = DummyESDocument.objects.query({...})\n qs = qs.limit(20).offset(40).order_by({\"created_at\": \"desc\"})\n\n\n4-5. \u30d1\u30b8\u30cd\u30fc\u30b7\u30e7\u30f3\n\nDjango \u306e\u30af\u30a8\u30ea\u30bb\u30c3\u30c8\u306e\u3088\u3046\u306b\u3001\n\n::\n\n from django.core.paginator import Paginator\n\n qs = DummyESDocument.objects.query({...})\n paginator = Paginator(qs, 100)\n\n page = paginator.page(1)\n\n page.object_list...\n\nDjango \u306e Paginator \u3092\u7528\u3044\u3066\u306e\u30d1\u30b8\u30cd\u30fc\u30b7\u30e7\u30f3\u304c\u3067\u304d\u307e\u3059\u3002\n\n\n5. \u8a2d\u5b9a\n-----\n\n5-1. \u30ed\u30fc\u30ab\u30eb\u30a8\u30ea\u30a2\u306e ES \u3092\u6307\u5b9a\u3059\u308b\u5834\u5408\n\nsettings.py\n\n::\n\n ELASTICINDEX_HOSTS = [{'host': '127.0.0.1', 'port': 9200}]\n\nELASTICINDEX_HOSTS \u3092\u6307\u5b9a\u3057\u3066\u304f\u3060\u3055\u3044\u3002\n\n\n5-2. Amazon Elasticsearch Service \u3092\u4f7f\u3046\u5834\u5408\n\n::\n\n ELASTICINDEX_HOSTS = [\n {'host': 'xxxxxx.ap-northeast-1.es.amazonaws.com',\n 'port': 443}]\n ELASTICINDEX_AWS_IAM = {\n 'access_id': 'AWSACCESSID',\n 'secret_key': 'AwsSecretKey******',\n 'region': 'ap-northeast-1',\n }\n\nAmazon ES \u3078\u306e\u30a2\u30af\u30bb\u30b9\u3092\u8a31\u53ef\u3057\u305f IAM \u306e\u30af\u30ec\u30c7\u30f3\u30b7\u30e3\u30eb\u3092 settings \u306b\u66f8\u3044\u3066\u304f\u3060\u3055\u3044\u3002\n\nAmazon ES \u3078\u306e\u30a2\u30af\u30bb\u30b9\u8a31\u53ef\u65b9\u6cd5(IAM\u306e\u4f5c\u6210\u65b9\u6cd5)\u306f Qiita \u306b\u66f8\u304d\u307e\u3057\u305f\n\nAmazon Elasticsearch Service \u3092 Python \u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u3067\u3001IAM \u30a2\u30ab\u30a6\u30f3\u30c8\u3092\u4f5c\u3063\u3066\u30bb\u30ad\u30e5\u30a2\u306b\u30a2\u30af\u30bb\u30b9\u3059\u308b - Qiita\n\nhttp://qiita.com/ytyng/items/7c90c0b141aad9a12b38\n\n\n6. \u30c6\u30b9\u30c8\n------\n\n\u30af\u30ed\u30fc\u30f3\u3057\u305f\u30ea\u30dd\u30b8\u30c8\u30ea\u3067\n\n::\n\n $ pip install -r requirements.txt\n $ ./runtest.py\n\n\u5b9f\u969b\u306b ES \u306b\u30a2\u30af\u30bb\u30b9\u3092\u884c\u3046\u3002\nES\u304c\u30ed\u30fc\u30ab\u30eb\u306e 9200 \u30dd\u30fc\u30c8\u3067\u52d5\u4f5c\u3057\u3066\u3044\u306a\u3044\u5834\u5408\u306f\u3001local_settings.py \u3092\u4f5c\u6210\n\nlocal_settings.py\n::\n\n ELASTICINDEX_HOSTS = [{'host': 'my-elasticsearch-host', 'port': 9200}]\n", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/ytyng/elasticindex.git", "keywords": "Elasticsearch,Django,Python", "license": "BSD", "maintainer": null, "maintainer_email": null, "name": "django-elasticindex", "package_url": "https://pypi.org/project/django-elasticindex/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/django-elasticindex/", "project_urls": { "Download": "UNKNOWN", "Homepage": "https://github.com/ytyng/elasticindex.git" }, "release_url": "https://pypi.org/project/django-elasticindex/0.1.5/", "requires_dist": null, "requires_python": null, "summary": "Shallow elasticsearch wrapper on Django", "version": "0.1.5" }, "last_serial": 2300087, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "e0d3501bde0ffbfed4361fa67f7e2ed0", "sha256": "6e0bc0019226fb75e8b4cbd99b727a7d0218bc00dd86141968c3044a8cff442f" }, "downloads": -1, "filename": "django-elasticindex-0.1.0.tar.gz", "has_sig": false, "md5_digest": "e0d3501bde0ffbfed4361fa67f7e2ed0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8167, "upload_time": "2016-03-02T09:34:59", "url": "https://files.pythonhosted.org/packages/ed/ea/6fc704be883a7a819cf381ec8d8eeb271b82c1084c9ed38861d5e6744a53/django-elasticindex-0.1.0.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "3860bba1d2dbcd818a8901c928aacff7", "sha256": "41f3fc12c77148cba910f109842e7e27b97180601dbfc9cba14c7d30deb5f68b" }, "downloads": -1, "filename": "django-elasticindex-0.1.1.tar.gz", "has_sig": false, "md5_digest": "3860bba1d2dbcd818a8901c928aacff7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8154, "upload_time": "2016-03-02T11:06:48", "url": "https://files.pythonhosted.org/packages/48/2b/091bc193bbbca995bc9f64f6ac56db4be73ebc45c5f7652ec16b6acbd109/django-elasticindex-0.1.1.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "53c3a974418ab91afbd3011a2d967fc8", "sha256": "777893b4d56d65a8b981fdcf29bef5f3018f23eda9d6830dcc0e351751664524" }, "downloads": -1, "filename": "django-elasticindex-0.1.2.tar.gz", "has_sig": false, "md5_digest": "53c3a974418ab91afbd3011a2d967fc8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8597, "upload_time": "2016-03-03T02:16:37", "url": "https://files.pythonhosted.org/packages/25/a0/5d12c001c74091e456a19aced073e7223eb206cae3043f8e76ddc9372916/django-elasticindex-0.1.2.tar.gz" } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "179010c0e16a58d30f3c8498e656a764", "sha256": "c44958de8f36f2c14d478a0b10cdcb7cda8577ee8bb45702b7952a11c5ac33b0" }, "downloads": -1, "filename": "django-elasticindex-0.1.3.tar.gz", "has_sig": false, "md5_digest": "179010c0e16a58d30f3c8498e656a764", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9437, "upload_time": "2016-03-07T07:01:07", "url": "https://files.pythonhosted.org/packages/52/21/dbd15aebffd58668fa2dffe3cfe695b75b8d2a5f47006f7383154f8d8a1e/django-elasticindex-0.1.3.tar.gz" } ], "0.1.4": [ { "comment_text": "", "digests": { "md5": "301bd257e56a51233c536cd9be383499", "sha256": "1d643a623e290d0e3626dbc6dd5e89f6cad357da5f65827b5d7d2e929adf3b48" }, "downloads": -1, "filename": "django-elasticindex-0.1.4.tar.gz", "has_sig": false, "md5_digest": "301bd257e56a51233c536cd9be383499", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9437, "upload_time": "2016-03-07T07:25:48", "url": "https://files.pythonhosted.org/packages/12/4a/81e441047eef9961f7cb88b951c45f1c69a7419a83585ea3dc861791a09b/django-elasticindex-0.1.4.tar.gz" } ], "0.1.5": [ { "comment_text": "", "digests": { "md5": "e802ad390026bd97040bc07b1ae5d28a", "sha256": "f49f5b7d7f472991d5d7487830181ee80264074a18784a1d909a9c24c9ac3fa7" }, "downloads": -1, "filename": "django-elasticindex-0.1.5.tar.gz", "has_sig": false, "md5_digest": "e802ad390026bd97040bc07b1ae5d28a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9500, "upload_time": "2016-08-24T09:31:11", "url": "https://files.pythonhosted.org/packages/b8/89/5ed8a6f080942bca26c394a7e3586bb028a2d41daeedbae8ae6960dd6e5d/django-elasticindex-0.1.5.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "e802ad390026bd97040bc07b1ae5d28a", "sha256": "f49f5b7d7f472991d5d7487830181ee80264074a18784a1d909a9c24c9ac3fa7" }, "downloads": -1, "filename": "django-elasticindex-0.1.5.tar.gz", "has_sig": false, "md5_digest": "e802ad390026bd97040bc07b1ae5d28a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9500, "upload_time": "2016-08-24T09:31:11", "url": "https://files.pythonhosted.org/packages/b8/89/5ed8a6f080942bca26c394a7e3586bb028a2d41daeedbae8ae6960dd6e5d/django-elasticindex-0.1.5.tar.gz" } ] }