支持Django的ElasticSearch客户端。

django-gum的Python项目详细描述


Gum是一个Django应用程序,用于将ElasticSearch 1.x与Django集成。你可以在 https://django-gum.readthedocs.org

https://badges.gitter.im/marcosgabarda/django-gum.svghttps://badge.fury.io/py/django-gum.svghttps://img.shields.io/pypi/dm/django-gum.svgDocumentation Statushttps://travis-ci.org/marcosgabarda/django-gum.svg?branch=masterhttps://coveralls.io/repos/github/marcosgabarda/django-gum/badge.svg?branch=master

快速启动

1使用pip安装:

pip install django-gum

2将“gum”添加到已安装的应用程序设置中,如下所示:

INSTALLED_APPS += ('gum',)

3将ElasticSearch配置添加到如下设置:

GUM_ELASTICSEARCH_URLS = ["http://127.0.0.1:9200/"]
GUM_ELASTICSEARCH_INDEX = ".gum-tests"

可用配置变量列表:

  • GUM_DEBUG(布尔值)
  • GUM_USE_CELERY(布尔值)
  • GUM_ELASTICSEARCH_URLS(列表)
  • GUM_ELASTICSEARCH_INDEX(字符串)

4在应用程序中创建index.py,内容如下:

from gum.indexer import MappingType, indexer

class PostMappingType(MappingType):

    def document(self, instance):
        tags_text = " ".join(map(lambda x: x.label, instance.tags.all()))
        return {
            "title": instance.title,
            "content": instance.content,
            "text": "{} {} {}".format(instance.title, instance.content, tags_text)
        }

    def mapping(self):
        return {
            "properties": {
                "title": {
                    "type": "string",
                    "store": True,
                },
                "content": {
                    "type": "string",
                    "store": True,
                },
                "text": {
                    "type": "string",
                    "store": True,
                }
            }
        }

indexer.register(Post, PostMappingType)

5更新弹性搜索索引:

./manage.py gum --update-index

您可以指定要索引的模型:

./manage.py gum --update-index blog.Post

搜索

可以使用elasticsearch模型执行elasticsearch搜索(访问search方法) 属性:

response = Post.elasticsearch.search(body={
    "query": {
        "match_all": {}
    }
})

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
Java类之间并发性不一致的HashMap   插件如何在JavaSwing中使用UIManager和Classloader从外部jar安装外观?   java JasperReports:找不到子报表   在项目中找不到java生成的Javadoc文件   java BigDecimal。multiply()和divide()方法返回十六进制数。为什么?   java统计出现次数并从字符串中删除重复项   调用运算符时发生java NullPointerException   Spring和Hibernate之间的java配置错误   JavaZK将用户重定向回上一页   Javasocket为传出连接指定特定的网络接口   如果拖动到某个区域外,java Make按钮操作将被取消   如何在Eclipse for selenium 3.141.59中添加Java文档链接   java从匹配条件的数组中获取所有索引   docker未连接到RemoteWebDriver的java Gitlab ci selenium测试   java重写run方法   utf 8如何使用java解码UTF8编码的字符串?   java如何从eclipse调试部署在tomcat上的web应用程序?   将字母字符与前面没有百分号的Java正则表达式匹配