es查询大文本效率_es中terms查询速度能否优化
es表結構如下:PUT demo/
{
"mappings": {
"demo": {
"_all": {
"enabled": false
},
"properties": {
"aId": {
"type": "keyword"
},
"cId": {
"type": "keyword"
}
}
}
}
}
插入:按照如上單獨aId和cId存儲為一個doc
查詢:每次傳入一個aId和1000個cId的列表,返回es中匹配的aId+cId的列表。
使用如下filter+terms查詢:
GET demo/_search?routing=11147489
{
"size":1000,
"query": {
"bool": {
"filter": {
"term": {
"aId": "11147489"
}
},
"must": [
{
"terms": {
"cId": [
"11147494",
"11147498",
....(1000個)
]
}
}
]
}
}
}
對于es中aId下cId數量小于100的情況性能比較理想大概在7ms左右,
但是對于aId下cId數量幾千幾萬的情況下,響應時間達到40ms以上,但如果size設置為100,則有時候能降到10多ms。
以上插入和查詢的時候使用了路由,返回結果_source也置為過false,使用過ids查詢,用should里面套用1000個term替換terms,但效果都不理想。
請問下論壇里面的大神:
1. 為什么size=100和size=1000響應時間差距這么大,理論上查詢條件帶有aId和路由相同,只在一個分片上查詢,協調節點只需要從一個分片上直接獲取數據并返回即可,并沒有分片之間結果合并,是因為fetch的過程比較耗時嗎?我用profile去查看的時候幾個耗時都不超過1ms。
2. 有沒有其他方法優化aId下cId較大的情況,上述查詢的響應時間。
謝謝。
總結
以上是生活随笔為你收集整理的es查询大文本效率_es中terms查询速度能否优化的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python怎么将png转为tif_pn
- 下一篇: docusign文档打不开_怎样查看 d