gpt4 book ai didi

sql - 返回 Elasticsearch SQL 查询中的所有行

转载 作者:行者123 更新时间:2023-12-02 22:22:06 24 4
gpt4 key购买 nike

我在 Elasticsearch 中有一个简单的 SQL 查询,我知道它返回的结果少于 100 行。如何一次获得所有这些结果(即,不使用滚动)?我试过 limit n子句,但它在 n 时有效小于或等于 10 但在 n 时不起作用大于10。

调用 Elasticsearch SQL API 的 Python 代码如下。

import requests
import json

url = 'http://10.204.61.127:9200/_xpack/sql'
headers = {
'Content-Type': 'application/json',
}
query = {
'query': '''
select
date_start,
sum(spend) as spend
from
some_index
where
campaign_id = 790
or
campaign_id = 490
group by
date_start
'''
}
response = requests.post(url, headers=headers, data=json.dumps(query))

上面的查询返回一个游标 ID。我试图将游标 ID 提供给同一个 SQL API,但它没有给我更多的结果。

我还尝试使用 SQL 翻译 API 将上述 SQL 查询翻译为 native Elasticsearch 查询,并将其包装到以下 Python 代码中,但它也不起作用。我仍然只有 10 行结果。
import requests
import json


url = 'http://10.204.61.127:9200/some_index/some_doc/_search'
headers = {
'Content-Type': 'application/json',
}
query = {
"size": 0,
"query": {
"bool": {
"should": [
{
"term": {
"campaign_id.keyword": {
"value": 790,
"boost": 1.0
}
}
},
{
"term": {
"campaign_id.keyword": {
"value": 490,
"boost": 1.0
}
}
}
],
"adjust_pure_negative": True,
"boost": 1.0
}
},
"_source": False,
"stored_fields": "_none_",
"aggregations": {
"groupby": {
"composite": {
"size": 1000,
"sources": [
{
"2735": {
"terms": {
"field": "date_start",
"missing_bucket": False,
"order": "asc"
}
}
}
]
},
"aggregations": {
"2768": {
"sum": {
"field": "spend"
}
}
}
}
}
}
response = requests.post(url, headers=headers, data=json.dumps(query)).json()

最佳答案

POST _sql?format=json
{
"query": "SELECT field1, field2 FROM indexTableName ORDER BY field1",
"fetch_size": 10000
}
上述查询将在响应中返回一个游标,需要在下一次调用中传递。
POST _sql?format=json
{
"cursor": "g/W******lAAABBwA="
}
这类似于 Elasticsearch 中的普通滚动方法

关于sql - 返回 Elasticsearch SQL 查询中的所有行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52984413/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com