使用django的elasticsearch查询功能
elasticfun的Python项目详细描述
#弹性乐趣
一个小的工具集,使使用PyelasticSearch更容易和有趣。 我们的主要目标是:
- Provide an easy and consistent way to build queries
- Hook up a connection manager to the django settings system
我们的一些长期目标
- An API to declare indexes and fields
- A set of commands to manage (update, rebuild, clean) indexes
##查询对象
这个api旨在为您提供一种愉快的方式来构建甚至是复杂的查询 用于弹性搜索。下面的代码片段演示了它的工作原理:
`python >>> from elasticfun import Query >>> query = (Query('fitness') & (Query(category='Accessories') | Query(category='SportWear'))) >>> str(query) '("fitness" AND (category:"Accessories" OR category:"SportWear"))' `
###在查询对象上搜索单词
查询对象的主构造函数只接收一个表达式 同时,这意味着如果需要组合不同的单词/字段 要构建查询,必须使用 反对。这意味着:
`python >>> from elasticfun import Query >>> str(Query('icecream')) '"ice cream"' `
与此完全不同:
`python >>> from elasticfun import Query >>> str(Query('ice') & Query('cream'))'("ice" AND "cream")' `
与此完全不同:
`python >>> from elasticfun import Query >>> str(Query('ice') | Query('cream'))'("ice" OR "cream")' `
###从用户输入生成查询
上面的api是程序员用来构建查询的 动态地通过代码。但正如我们所知,一个非常常见的查询 builder对象接收用户输入,例如从搜索框。
`python >>> from elasticfun import Query >>> str(Query.from_user_input('icecream'))'("ice" AND "cream")' `
但是,也可以将相同操作的默认运算符更改为 得到这样的结果:
`python >>> from elasticfun import Query >>> str(Query.from_user_input('ice cream', default_op='OR'))'("ice" OR "cream")' `
##测试覆盖率
这个库的第一行是一个单元测试,它完全 写在TDD的概念下,我们计划保持这种方式。 如果您愿意为我们的拙劣项目提供补丁,请确保 保险范围不会减少。
另外,我强烈建议您开始您建议的功能或错误修复 通过写测试。它肯定会降低复杂性。 实际的代码,从而提高它的质量。