flutter 我不知道如何使用elastic_client查询,range

nbnkbykc  于 2022-11-17  发布在  Flutter
关注(0)|答案(1)|浏览(115)

问题

我目前正在开发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获取数据,请您也告诉我。

dwbf0jvd

dwbf0jvd1#

我想你可以试着这样做:

await client.search(
      index: 'my_index',
      type: 'my_type',
      query: Query.range(
          '@timestamp',
          gte: "2022-08-16T16:18:00+09:00",
          lte: "now"),
      source: true);

但客户端并不负责format
也许公关是受欢迎的?

相关问题