GoForum › 🌐 V2EX
es 过亿数据查询咨询
seedhk ·
2026-06-04 17:08 ·
0 次点赞 · 15 条回复
前提:
1 亿左右的数据,数据来源是设备的轨迹数据(gps ,速度,温度等信息),设备端按 5s 左右一次上报
查询需求:
- 能支持查询 3 400 台设备的最新轨迹数据
- 查询单个设备的轨迹信息(这个简单)
我自己尝试搭建了 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 条回复
luciankaltz · 2026-06-04 17:18
都是时序数据,为什么不放时序数据库呢 还是你要对着某个文本字段做全文索引?
@ca2oh4 #3 @luciankaltz 我去看看时序数据库,谢谢
AutumnVerse · 2026-06-04 17:23
lat lng 不要用 double 存,有专门的 location 类型。
不过单看你这个查询,索引和查询语句都没问题,不应该这么慢,应该是 es 哪里配置有问题。不过你这个内存确实太小了,线上 es 服务器,基本上 200g 内存起步
@AutumnVerse lat 和 lng 因为不会涉及查询,还需要改成 location 吗? 您说的具体配置问题可能是哪里问题? 内存如果换成 3 个节点每个 8g ,是否会好一些?
@fjkfwz406 shards 数据增加吗? 另外测试过 serialNumber route 到一个 shard 上的,速度也快不起来
添加回复
你还需要 登录
后发表回复
都是时序数据,查的时候,限制数据在最新二十分钟内,应该就可以命中缓存了吧