有弹性的搜索,有表现力的搜索

sqlorm4es的Python项目详细描述


sqlorm4es

用于elasticsearch的一个简单而有表现力的类似sql的orm。在

示例

  • 以Django方式定义索引模型:
fromsqlorm4esimport*classLogCenter(BaseModel):__index__='lala'__database__={"host":"127.0.0.1:9200"}ok=Boolean(default=True)lineno=Integer(required=True)message=Text(default='xixi')timestamp=Date(name="@timestamp",timezone="+8")bigbrother=Object(head=Text(),hand=Object(finger=Float(),nail=Boolean()))
  • 以表达方式搜索弹性搜索:
^{pr2}$
  • 请注意,可以嵌套where中的and(amp;)/或(|)表达式
  • 还支持按聚合分组:MAX,MIN,AVG,SUM,COUNT。。。在
  • 还支持订单依据、限制、偏移量:
res=LogCenter.select('max(lineno)')\
    .group_by(LogCenter.ok,LogCenter.timestamp)\
    .order_by((LogCenter.timestamp,'asc'))\
    .execute()
  • 像普通python对象一样操作文档,赋值时将验证值(例如,日期字段中的值全部存储为UTC):
new_log=LogCenter(ok=False,message='oops',timestamp='2019-10-10')new_log.bigbrother={"head":'tough',"hand":{"finger":"long","nail":"clean"}}
  • 创建单个文档:
new_log.save()
  • Insert、Delete、Update和Index操作:即将推出。。。在

安装

Sqlorm4es已经打包到pypi中,所以只需要一个简单的命令就可以安装它:

pip install sqlorm4es

Elasticsearch驱动程序

Sqlorm4es基于官方的Elasticsearch客户端实现了一个简单的几乎无锁的连接池。因为它是无锁的,所以我不确定它是否是线程安全的,但它在我自己的多线程测试中运行良好:)

  • 请注意,如果您没有设置模型的配置,它将使用以下默认配置:
config={'hosts':['127.0.0.1:9200'],'maxsize':20,'sniff_on_start':False,'sniff_on_connection_fail':False,'sniff_timeout':.1,'sniffer_timeout':None,'retry_on_timeout':False,'timeout':60,}

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

推荐PyPI第三方库


热门话题
Java中的第10个解决方案   Java中泛型的super和extends组合   Java Android OpenGL ES 2.0片段着色器texture2D不工作   在JList elementJava上按下时打开弹出窗口   字典Java数据结构允许对象上的布尔标志和排序?   java我该如何停止为AWS关系数据库服务收费?   java如何检查Google定位准确度是否提高?   java使用Mockito将方法存根在与被测类相同的类中(CUT)   java IntelliJIdea disable inspection:参数的实际值始终为   java CXF+多态POST数据   java命名空间“ads”未绑定   Sun(1999)的“Java编程语言的代码约定”的编码风格过时了吗?   JAVA中的隐式接口、类转换   javafx如何配置Java登录应用程序代码   java如何在滚动窗格中设置选项卡以及如何显示选项卡标题   java中等式和条件运算符的优先级   java Spring WS无法返回JAXB响应   错误响应上的java jaxws处理程序行为   java Hibernate HQL映射查询