问题
我目前正在开发Flutter应用程序。我们使用的语言是dart。我正在考虑使用ElasticSearch数据,我想使用一个名为elastic_client的包来检索数据。我试图通过指定时间来检索数据,但我不知道如何使用它。如果您能帮助我,我将不胜感激。
我们想要实现的目标
我想在elastic_client包中按时间检索数据,如果用curl写,则如下所示。
$ curl -XGET 'localhost:9200/index/_search' -d '{
"query": {
"range" : {
"@timestamp" : {
"gte" : "2022-08-16T16:18:00+09:00", "lte": "now", "format" : "date_time_no_millis"
}
}
}
}'
我想用elastic_client来做这个,我想我可以用search方法中的Query.range来做,但是我不知道如何使用它。
代码
我想用_call_elastic获取数据。
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: const MyHomePage(title: 'Flutter Demo Home Page'),
);
}
}
class MyHomePage extends StatefulWidget {
const MyHomePage({super.key, required this.title});
final String title;
@override
State<MyHomePage> createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
int _counter = 0;
_call_elastic() async {
dynamic a = "a";
final transport = HttpTransport(url: 'url');
final client = Client(transport);
final search1 = await client.search(
index: '',
type:'_doc',
query: Query.range(gte: 'a'),
);
var map = search1.toMap();
print(map);
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(widget.title),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
const Text(
'You have pushed the button this many times:',
),
Text(
'$_counter',
style: Theme.of(context).textTheme.headline4,
),
],
),
),
floatingActionButton: FloatingActionButton(
onPressed: _call_elastic,
tooltip: 'Increment',
child: const Icon(Icons.add),
),
);
}
}
我们尝试的
我已经看过了elastic_client文档,并对它进行了一些修改,但是我不知道如何使用它。
最后。
非常感谢您的帮助。另外,如果有任何其他方法可以通过指定时间从flutter中的elastic_search获取数据,请您也告诉我。
1条答案
按热度按时间dwbf0jvd1#
我想你可以试着这样做:
但客户端并不负责
format
。也许公关是受欢迎的?