使用 man ascii 来查看 ASCII 表。

Es 使用Terms查询出现丢失数据的问题,而且数据也不是很快,传入的参数有100多个 其中有好几条数据查询的时候出现了丢失

Elasticsearch | 作者 qingjianfeng | 发布于2021年05月17日 | 阅读数:2658

 
软件版本; 目前版本是7.11.2
运行环境;单节点的服务器
场景/上下文;无
有用的信息(请使用代码块粘贴,以方便他人查看);无
相关查询请求;
错误日志;无
代码块;
 
  1.  查询的时候传入的参数有100多个,但是返回回来的数据会出现丢失的情况

 各位大佬,老板们来帮我看看,目前是单节点,索引里面的数据大概是3000W左右,但是查询的时候比较慢,帮我看看要如何优化
微信截图_20210517220915.png 微信截图_20210517220947.png 微信截图_20210517220957.png
已邀请:

envy666

赞同来自:

其实ES并不善于处理这种查询,这种需求为啥不弄个redis缓存呢

Charele - Cisco4321

赞同来自:

不确定你的问题究竟是数据丢失还是查询慢?
增加节点可能会使查询加快吧,你现在只有单节点。
 
另外,你的这个bool里面有几个条件?如果只有一个filter,
直接用terms查询就可以了,没必要套一个bool啊,当然这不是重点,只是小看法。
匿名用户

匿名用户

赞同来自:

对于这种需求,只可以用两个字形容,S B.

yuechen323 - 晨儿哥

赞同来自:

这种需求是很常见的,  一般都是要先确定一定的范围, 然后再全文搜索, 不过es底层是先全文搜索, 再用terms过滤不符合要求的
只不过你这个例子是没有全文搜索的
 
这个优化方式可以这样, 你把 terms N 个 id 改为:
should: [
   { term: {}}
   { term: {}}
   { term: {}}
   { term: {}}
   { term: {}}
]
 
这是我之前看资料的时候看到的一种优化方法,  涉及到底层源码, 为了避开大范围的过滤, 用变通的方法来实现一样的效果, 你可以试试, 然后告诉我是否有用,  我也在关注这个

要回复问题请先登录注册