vania_elasticsearch 1.0.0 copy "vania_elasticsearch: ^1.0.0" to clipboard
vania_elasticsearch: ^1.0.0 copied to clipboard

Production-ready Elasticsearch client, query builder, bulk indexing, and Vania integration.

Vania Elasticsearch #

Full-text search for Vania: index your models, then search them with real relevance ranking.

vania_elasticsearch connects a Vania app to an Elasticsearch cluster. It gives you a typed client, a query builder, bulk indexing, and — the part most apps want — a Searchable mixin that turns any model into a searchable document. Add it to a model and Article().search('dart') returns relevance-ranked hits, not a clumsy LIKE '%dart%'.

Install #

dependencies:
  vania_elasticsearch: ^1.0.0

Register the provider and point it at your cluster:

final providers = <ServiceProvider>[
  ElasticsearchServiceProvider(
    config: ElasticsearchConfig(
      hosts: [Uri.parse(env('ELASTICSEARCH_HOST', 'http://localhost:9200'))],
      defaultIndex: 'articles',
    ),
  ),
];

Make a model searchable #

import 'package:vania/database.dart' show Model;
import 'package:vania_elasticsearch/vania_elasticsearch.dart';

class Article extends Model with Searchable {
  Article({int? id, String? title, String? body}) {
    tableName = 'articles'; // the table name doubles as the index
    if (id != null) attributes['id'] = id;
    if (title != null) attributes['title'] = title;
    if (body != null) attributes['body'] = body;
  }
}

By default the model's table name is the index and its toJson() is the indexed document — no separate mapping to maintain.

// Index a document
await article.searchable();

// Full-text search across fields, ranked by relevance
final result = await Article().search('dart backend', fields: ['title', 'body']);
print(result.total);
print(result.hits);

What's included #

  • Searchable mixinsearchable() to index, unsearchable() to remove, search() to query.
  • Query builder — multi-match, match-all, and custom queries with paging (from, size).
  • Direct clientElasticsearch.search(...), Elasticsearch.index(...), and bulk helpers when you need lower-level control.
  • Bulk indexing for backfilling large datasets efficiently.

License #

MIT

0
likes
150
points
73
downloads

Documentation

Documentation
API reference

Publisher

verified publishervdart.dev

Weekly Downloads

Production-ready Elasticsearch client, query builder, bulk indexing, and Vania integration.

Homepage
Repository (GitHub)
View/report issues

Topics

#server #backend #elasticsearch #search #vania

License

MIT (license)

Dependencies

vania

More

Packages that depend on vania_elasticsearch