使用 Elasticsearch 进行颤振

时间:2020-12-26 17:24:58

标签: flutter elasticsearch

我在后端使用 Firestore 和 Elasticsearch,在后端使用 Flutter。我设法使用云功能集成了 Firestore 和 Elasticsearch。我不清楚如何将 Flutter 与 Elasticsearch 集成。

我的 Elasticsearch 实例有用户索引,flutter 应该向 Elasticsearch 发送一个查询,要求提供满足查询的用户列表。只有经过身份验证的用户才能发送此类请求。

任何人都知道将 Flutter 与 Elasticsearch 集成的最佳方式。

提前致谢。

1 个答案:

答案 0 :(得分:0)

使用这个包

<块引用>

包裹:elastic_client

视频教程

<块引用>

https://www.youtube.com/watch?v=DVfj_z17O2s

示例代码:

import 'package:elastic_client/elastic_client.dart';

Future<void> main() async {
  final transport = HttpTransport(url: 'http://localhost:9200/');
  final client = Client(transport);

  await client.updateDoc(
    index: 'my_index',
    type: 'my_type',
    id: 'my_id_1',
    doc: {'some': 'data', 'name': 'Sue', 'distance': 10},
  );
  await client.updateDoc(
    index: 'my_index',
    type: 'my_type',
    id: 'my_id_2',
    doc: {'some': 'data', 'name': 'Bob', 'distance': 20},
  );
  await client.updateDoc(
    index: 'my_index',
    type: 'my_type',
    id: 'my_id_3',
    doc: {'some': 'data', 'name': 'Joe', 'distance': 10},
  );
  await client.flushIndex(index: 'my_index');

  final rs1 = await client.search(
      index: 'my_index',
      type: 'my_type',
      query: Query.term('some', ['data']),
      source: true);
  print(rs1.toMap());

  print('---');

  final rs2 = await client.search(
      index: 'my_index',
      type: 'my_type',
      query: Query.term('some', ['data']),
      source: [
        'some',
        'name'
      ],
      sort: [
        {'distance': 'asc'},
        {'name.keyword': 'asc'}
      ]);
  print(rs2.toMap());

  await client.addAlias(index: 'my_index', alias: 'my_index_alias');
  await client.updateDoc(
    index: 'my_second_index',
    type: 'my_type',
    id: 'my_id_1',
    doc: {'some': 'data', 'name': 'Alice', 'distance': 10},
  );
  await client.swapAlias(
      alias: 'my_index_alias', from: 'my_index', to: 'my_second_index');
  final aliases = await client.getAliases(aliases: ['my_index_*']);
  print(aliases.map((e) => {'alias': e.alias, 'index': e.index}));
  await client.removeAlias(index: 'my_second_index', alias: 'my_index_alias');

  await transport.close();
}