es查询报seq_no_primary_term字段不存在

编程

现象

今天通过elasticsearch-rest-high-level-client 工具查询es 统计的时候,报了以下的错误

{

"error": {

"root_cause": [

{

"type": "parsing_exception",

"reason": "Unknown key for a VALUE_BOOLEAN in [seq_no_primary_term].",

"line": 67,

"col": 56

}

],

"type": "parsing_exception",

"reason": "Unknown key for a VALUE_BOOLEAN in [seq_no_primary_term].",

"line": 67,

"col": 56

},

"status": 400

}

翻译过来就是,seq_no_primary_term 这个字段不支持。手动通过http调用查询,去掉seq_no_primary_term字段后,发现可以正常查询,可以确认是当前的es版本不支持这个字段的解析导致。

查询参数如下:

"aggregations": {

"topHit": {

"top_hits": {

"from": 0,

"size": 1,

"version": false,

"seq_no_primary_term": true,

"explain": false,

"_source": {

"includes": ["twoLevelCode"],

"excludes": []

}

}

}

}

解决

经过排查,

  1. 当前的es版本是 6.2.2。
  2. elasticsearch-rest-high-level-client 的版本为6.7.2
  3. 通过查询官方文档,发现seq_no_primary_term 是在es6.7版本添加的,所以会产生上述问题。客户端拼装的es查询条件多个seq_no_primary_term字段,但是服务器不支持解析。官方文档
  4. 因为服务版本无法升级,所以将客户端工具降级到6.7版本以下即可,比如v6.6.2

总结

此次问题的更本原因还是客户端查询工具与服务端的版本不一致,导致低版本的服务器不支持高版本的查询语法导致。解决办法也很简单,将两端的版本改为一致即可。

以上是 es查询报seq_no_primary_term字段不存在 的全部内容, 来源链接: utcz.com/z/518096.html

回到顶部