NLPchina / elasticsearch-sql

Use SQL to query Elasticsearch
Apache License 2.0
6.99k stars 1.54k forks source link

If there's a way to use scroll_id in sql? #575

Closed imqishi closed 6 years ago

imqishi commented 6 years ago

Well, I read the controller.js and find that it seems the first fetch we got a scroll_id and following data is got by raw curl request... I just want to check if there's a method to use sql when fetch following data, or I will follow your code

shi-yuan commented 6 years ago

Sorry, not yet !

imqishi commented 6 years ago

OK~ Thank you~

shi-yuan commented 6 years ago
SELECT /*! USE_SCROLL(100,30000)*/ firstname , balance FROM accounts
SELECT /*! USE_SCROLL("DnF1ZXJ5VGhlbkZldGNoBQAAAAAAAAABFklUS2VfQnVIU2k2U3h4UUVKM1d4ZFEAAAAAAAAAAhZJVEtlX0J1SFNpNlN4eFFFSjNXeGRRAAAAAAAAAAMWSVRLZV9CdUhTaTZTeHhRRUozV3hkUQAAAAAAAAAEFklUS2VfQnVIU2k2U3h4UUVKM1d4ZFEAAAAAAAAABRZJVEtlX0J1SFNpNlN4eFFFSjNXeGRR" ,30000)*/ firstname , balance FROM accounts
WhisperLoli commented 5 years ago

@shi-yuan 程序中使用SQL查询,结果集中如何拿到scroll id呢,我看了一下返回字段只有_source中的字段和 _id,没有返回_scroll_id字段啊 image

WhisperLoli commented 5 years ago

image

shi-yuan commented 5 years ago

用jdbc的话,直接:

select /*! USE_SCROLL*/ gender,lastname,age,_scroll_id from elasticsearch-sql_test_index_account where lastname='Heath'
WhisperLoli commented 5 years ago

用/! USE_SCROLL/的话没有指定scroll id存活时间,而且如果要获取下一批次呢?也没有提供上一批次的scroll id

shi-yuan commented 5 years ago

可以指定存活时间,30000就是存活时间(单位毫秒):

SELECT /*! USE_SCROLL(100,30000)*/ firstname , balance FROM accounts
SELECT /*! USE_SCROLL("DnF1ZXJ5VGhlbkZldGNoBQAAAAAAAAABFklUS2VfQnVIU2k2U3h4UUVKM1d4ZFEAAAAAAAAAAhZJVEtlX0J1SFNpNlN4eFFFSjNXeGRRAAAAAAAAAAMWSVRLZV9CdUhTaTZTeHhRRUozV3hkUQAAAAAAAAAEFklUS2VfQnVIU2k2U3h4UUVKM1d4ZFEAAAAAAAAABRZJVEtlX0J1SFNpNlN4eFFFSjNXeGRR" ,30000)*/ firstname , balance FROM accounts
ZQbd commented 5 years ago

这个是有问题的,第二次返回的scrollid和第一次返回的scrollid是一样的,然后第三次查询就会报错 @shi-yuan

shi-yuan commented 5 years ago

scrollid不一定会每次都变的,本地测试,是可以一直查的 image image image image

Aiyongfei commented 1 year ago

可以指定存活时间,30000就是存活时间(单位毫秒):

SELECT /*! USE_SCROLL(100,30000)*/ firstname , balance FROM accounts
SELECT /*! USE_SCROLL("DnF1ZXJ5VGhlbkZldGNoBQAAAAAAAAABFklUS2VfQnVIU2k2U3h4UUVKM1d4ZFEAAAAAAAAAAhZJVEtlX0J1SFNpNlN4eFFFSjNXeGRRAAAAAAAAAAMWSVRLZV9CdUhTaTZTeHhRRUozV3hkUQAAAAAAAAAEFklUS2VfQnVIU2k2U3h4UUVKM1d4ZFEAAAAAAAAABRZJVEtlX0J1SFNpNlN4eFFFSjNXeGRR" ,30000)*/ firstname , balance FROM accounts

使用jdbc怎么拿到这个scrollid了,没看到返回

shi-yuan commented 1 year ago

用jdbc的话,直接:

select /*! USE_SCROLL*/ gender,lastname,age,_scroll_id from elasticsearch-sql_test_index_account where lastname='Heath'

带上_scroll_id