先交代下我们的使用场景。我们是把一张分库分表的逻辑表导入了 OpenSearch,建立了相关索引,供后台管理界面查询使用。最近在使用的过程中遇到了几个问题。记之。

查询的数据最多只有 5000 条

我们有一个数据导出功能,当导出的数据超过 5000 条时,导出的表格里就只有 5000 条。我们使用的是 search 接口分页查,看日志发现当 startHit 到 5000 左右就返回失败了。咨询了下得知 search 接口为了保证能及时返回,当 startHit + hit > 5000 时就返回失败了。如果需要获取全量的数据需要用 scroll 接口。V3 可以参照这个来写,scroll迭代查询Demo,V2 的文档不太完善,试了几次才试出来。。。

query 子句长度不能超过 1k

我们的查询页面需要按照多个维度来查询,比如日期,发货仓,到货地等,而且都是多选,当日期跨度范围比较大的时候,query 子句的日期部分是这样的:

timekey: "2017-06-01" OR timekey: "2017-06-02” OR timekey: "2017-06-03” ...

当日期跨度比较大的时候发现查询又失败了。咨询了下 Hooch,query 子句编码后长度不能超过 1k,filter 子句长度不能超过 4k。然后教了我一种简洁的写法。

timekey:"2017-06-01"|"2017-06-02"|"2017-06-03” ...

然而只是这样还是不够,日期只是我的查询条件之一,几个条件加起来很容易超过 1k。比如到货地,当按照某个行政级别(比如省)查询时,需要把该级别和该级别下面各级别的数据都筛选出来,如果也这样遍历的话很容易就超了。想过把部分条件放到 fitler 子句里,但是 fitler 子句只支持 “>

继续翻文档的过程中,发现 OpenSearch 支持 “^31” 这样的语法来查 31 开头的数据(字段类型需是 SHORT_TEXT,分词模式选模糊分词),而地址 id 下级地址和上级地址的前缀又是一样的,通过这种方式很容易匹配一个行政级别下面的数据。同样的思路,其他字段的查询语句超长时,我也可以通过求公共前缀的方式来压缩长度。

为什么在使用 MySQL 的时候没遇到过 sql 过长的问题

联想了一下,对语句长度做限制应该是普遍存在的,为什么在之前使用 MySQL 批量插入的时候没遇到过类似问题。查了下,MySQL server 的max_allowed_packet 参数是限制接收到的包体长度的,默认值是 1M。

查询有 doc 丢失

运营同学在使用过程中发现有时会丢失一些数据。继续咨询,得到的回复是这样的

引擎更新文档是一整篇更新,更新流程是 先 delete 再 add。所以会有一瞬间找不到文档

这个问题目前没有解决方法,记录更新得越频繁就越容易出现这种情况。对于“频繁”没有具体的参数值,但是一秒钟有几次更新的话会被认为频繁。

最后,感谢 @Hooch 和 @本岩的答疑。

openSearch支持mysql版本_OpenSearch 使用二三事-阿里云开发者社区相关推荐

  1. 阿里云rds mysql 并发_干货 | 浅析RDS MySQL 8.0语句级并发控制-阿里云开发者社区

    背景 为了应对突发的数据库请求流量.资源消耗过载的语句访问.SQL 访问模型的变化, 并保持 MySQL 实例持续稳定运行,阿里云RDS for MySQL 8.0所采用的AliSQL分支设计了基于语 ...

  2. mysql blackhole缺点_【MySql】 BlackHole :黑洞引擎-阿里云开发者社区

    BlackHole :黑洞引擎,写入的任何数据都会消失,用于记录binlog做复制的中继存储! 如何安装: 在安装MySQL时使用带有--with-blackhole-storage-engine选项 ...

  3. mysql latid1_mysql数据库触发器详解-阿里云开发者社区

    1. 引言 Mysql的触发器和存储过程一样,都是嵌入到mysql的一段程序.触发器是mysql5新增的功能,目前线上凤巢系统.北斗系统以及哥伦布系统使用的数据库均是mysql5.0.45版本,很多程 ...

  4. centos mysql 设置_CentOS下MySQL安装后配置和设置-阿里云开发者社区

    CentOS下MySQL安装后配置和设置: 1:安装完成路径: 1.数据库目录 /var/lib/mysql/ 2.配置文件 /usr/share/mysql(mysql.server命令及配置文件) ...

  5. 阿里云mysql事件启动_mysql 启动事件-阿里云开发者社区

    事件调度器有时也可称为临时触发器(temporal triggers),因为事件调度器是基于特定时间周期触发来执行某些任务,而触发器(Triggers)是基于某个表所产生的事件触发的,区别也就在这里. ...

  6. 阿里 mysql中间件_MySQL中间件ProxySQL介绍 -阿里云开发者社区

    ProxySQL作为一款强大的中间件为MySQL的架构提供了有力的支持. 目前可以很好的支持 Master Slave MGR PXC等,并提供连接池.读写分离.日志记录等功能,当然还有很多其他实用功 ...

  7. ossim mysql密码_OSSIM 4.1安装-阿里云开发者社区

    OSSIM 4.1安装 在今年出版的畅销书<Unix/Linux网络日志分析与流量监控>一书中主要为大家介绍了开源安全运维利器-OSSIM,很多同行对Ossim表示了极大关注,纷纷来信咨询 ...

  8. liunx导出mysql慢查询日志查看_查看 MySQL 慢查询日志文件-问答-阿里云开发者社区-阿里云...

    查看 MySQL 是否启用了慢 SQL 查询: 查看慢 SQL 日志是否启用. mysql> show variables like 'log_slow_queries'; +--------- ...

  9. 万网mysql中文乱码_Linux下MySQL出现乱码的解决方法-阿里云开发者社区

    开发环境 cent os 6.5 mysql springboot duird 故障描述 本地开发环境没有任何问题,上传到服务器后发现提交的表单内容只要是中文直接变成 ??? 解决方式 错误尝试: 一 ...

最新文章

  1. leetcode算法题--石子游戏
  2. Python3之set, frozenset记录
  3. acdream 1157Segments cdq分治
  4. 信息系统项目管理师:第8章:项目质量管理(2)-章节重点
  5. TensorFlow-CIFAR10 CNN代码分析
  6. grub4dos中的不容易理解的问题
  7. 论文浅尝 - AAAI2020 | 从异质外部知识库中进行基于图的推理实现常识知识问答...
  8. python数据文件格式p_python对NOAA天气数据格式转换
  9. DataTable增加行
  10. 最新搜索引擎网站提交登录入口和收录入口大全
  11. 开课吧python小课学了有用吗-好消息!今天,审计、会计、税务、财务主管彻底沸腾了……...
  12. indesign图片规定在左下角_InDesign如何为目录模板设置母版
  13. 2018计算机本科论文,计算机科学学院关于2018届本科毕业论文(设计)的工作安排...
  14. Win Server 2016 安装 IIS 服务详细步骤-图文
  15. 卷帘快门和全局快门的区别
  16. Android——Timer停不下来的解决方法
  17. 英语语法构词篇-派生(Derivation)
  18. 系统优化与lvs详解配置、haproxy
  19. 2020-11-30
  20. 【转】面向程序员的数据库访问性能优化法则

热门文章

  1. JSP Servlet | 错误统一处理
  2. IOS开发之实现App消息推送(最新)
  3. JAVA GUI界面组件学习
  4. ExtJS4.2学习(17)表单基本输入控件Ext.form.Field(转)
  5. Struts2 Action的访问路径
  6. CLR via C# 3 读书笔记(5):第1章 CLR执行模型 — 1.5 本地代码生成器工具:NGen.exe...
  7. webdriver.chrome()禁止加载图片
  8. 转载:Linux批量远程管理主机命令_pssh用法详解
  9. Android教程 -07 Activity的任务栈和启动模式
  10. 有关android工程的构建脚本(build.xml)的学习