GoForum🌐 V2EX

es 过亿数据查询咨询

seedhk · 2026-06-04 17:08 · 0 次点赞 · 15 条回复

前提:

1 亿左右的数据,数据来源是设备的轨迹数据(gps ,速度,温度等信息),设备端按 5s 左右一次上报

查询需求:

  1. 能支持查询 3 400 台设备的最新轨迹数据
  2. 查询单个设备的轨迹信息(这个简单)

我自己尝试搭建了 3 个节点的 es ,每个节点 4g 左右内存,发现执行需求 1 时,大概需要 2-5s 左右,查询语句:

curl -X GET "http://192.168.1.210:9200/test_index/_search?pretty" \
-H 'Content-Type: application/json' \
-d '{
  "query": {
    "terms": {
      "serialNumber": [省略 sn]
    }
  },
  "collapse": {
    "field": "serialNumber"
  },
  "size": 300
}'

mapping 信息:

{
  "settings": {
    "number_of_shards": 3,
    "number_of_replicas": 1,
    "index": {
      "sort.field": "createTime",
      "sort.order": "desc"
    }
  },
  "mappings": {
    "properties": {
      "serialNumber": {
        "type": "keyword"
      },
      "createTime": {
        "type": "date",
        "format": "strict_date_optional_time||epoch_millis||yyyy-MM-dd HH:mm:ss.SSS||yyyy-MM-dd HH:mm:ss"
      },
      "longitude": {
        "type": "double"
      },
      "latitude": {
        "type": "double"
      }
    }
  }
}

请问可以做到需求 1 查询 3-400 台设备,耗时到 1s 左右吗?

15 条回复
dode · 2026-06-04 17:13
#1

都是时序数据,查的时候,限制数据在最新二十分钟内,应该就可以命中缓存了吧

tf2 · 2026-06-04 17:18
#2

无脑建议 “number_of_shards”: 10 先试试。

ca2oh4 · 2026-06-04 17:18
#3

那应该用时序数据库可能更合适一下吧

ca2oh4 · 2026-06-04 17:18
#4

另外 4GB 内存对于 ES 来说有点少,建议一个节点至少 64GB

luciankaltz · 2026-06-04 17:18
#5

都是时序数据,为什么不放时序数据库呢 还是你要对着某个文本字段做全文索引?

ca2oh4 · 2026-06-04 17:18
#6

如果内存紧张,多节点不如单节点

seedhk · 2026-06-04 17:18
#7

@dode 因为可能会有部分设备很久没有上报,也需要展示这些数据,所以没法加时间范围限制

seedhk · 2026-06-04 17:23
#8

@tf2 加到这么多分片会更快吗?

seedhk · 2026-06-04 17:23
#9

@ca2oh4 #3 @luciankaltz 我去看看时序数据库,谢谢

AutumnVerse · 2026-06-04 17:23
#10

lat lng 不要用 double 存,有专门的 location 类型。

不过单看你这个查询,索引和查询语句都没问题,不应该这么慢,应该是 es 哪里配置有问题。不过你这个内存确实太小了,线上 es 服务器,基本上 200g 内存起步

fjkfwz406 · 2026-06-04 17:28
#11

调大 shards ,按照 serialNumber router 到一个 shard 上,可以避免查多个 shard 然后 merge 的消耗

opengps · 2026-06-04 17:33
#12

车辆定位,是个前同行

seedhk · 2026-06-04 17:33
#13

@AutumnVerse lat 和 lng 因为不会涉及查询,还需要改成 location 吗? 您说的具体配置问题可能是哪里问题? 内存如果换成 3 个节点每个 8g ,是否会好一些?

seedhk · 2026-06-04 17:33
#14

@fjkfwz406 shards 数据增加吗? 另外测试过 serialNumber route 到一个 shard 上的,速度也快不起来

seedhk · 2026-06-04 17:33
#15

@opengps 请问下您之前涉及这块需求了吗? 是如何处理的

添加回复
你还需要 登录 后发表回复

登录后可发帖和回复

登录 注册
主题信息
作者: seedhk
发布: 2026-06-04
点赞: 0
回复: 0