Maybe I'm not exactly understanding what you mean by 'plugins for additional languages', but ZomboDB supports, out-of-the-box, Elasticsearch's full set of language analyzers. You can read about all of that starting here: https://github.com/zombodb/zombodb/blob/master/TYPE-MAPPING.md#zombodb-custom-domain-types
If there's a 3rd-party plugin that adds new analyzers, then ZomboDB can automatically support that too — you would just need to CREATE DOMAIN in Postgres for that analyzer and use that domain as your field type.
Hi! I'm the ZomboDB author. I don't speak Russian so I am reading this post through Google Translate. Please pardon me if I don't exactly understand what you're asking, but I'll try to answer as best I can.
1) Yes, you can combine standard Postgres WHERE clause predicates with ZomboDB text-search queries. For example:
SELECT * FROM test_elastic WHERE comments > 10 AND zdb('test_elastic', ctid) ==> 'text:(term1,term2,termN, «this is a phrase)';
Postgres will plan the query accordingly, based on the types of indexes you have on your columns. ZomboDB text queries (==>) can also work when Postgres plans a sequential scan, so it's quite powerful here.
My experience is that with a large amount of data, it's significantly faster to just do everything within the ZomboDB text query. If you have a good Elasticsearch cluster, it's VERY fast!
2) ZomboDB stores the tokens of each column in Elasticsearch, not the whole row. ZomboDB also operates within Postgres' „Access Method API“ interface such that it's not very different than a standard „btree“ index, as far as Postgres is concerned. As such, your source of truth is *always* Postgres and the ZomboDB index stores the minimal amount of data in Elasticsearch to enable text searching.
3) ZomboDB has its own query language that supports quite a bit of the Elasticsearch QueryDSL (not everything, but very close!). Full boolean expressions are supported. If you needed to expose the functionality of a random Elasticsearch plugin to ZomboDB that would likely require changes to ZomboDB. If you see this is a thing you'd need to do often, I'd love to hear more details on ZomboDB's github page.
Thanks for your interest and I hope my answers have been helpful!
I'll probably be better able to help on ZomboDB's github site through Issues. There's so much on this site I can't read! :)
If there's a 3rd-party plugin that adds new analyzers, then ZomboDB can automatically support that too — you would just need to CREATE DOMAIN in Postgres for that analyzer and use that domain as your field type.
1) Yes, you can combine standard Postgres WHERE clause predicates with ZomboDB text-search queries. For example:
SELECT * FROM test_elastic WHERE comments > 10 AND zdb('test_elastic', ctid) ==> 'text:(term1,term2,termN, «this is a phrase)';
Postgres will plan the query accordingly, based on the types of indexes you have on your columns. ZomboDB text queries (==>) can also work when Postgres plans a sequential scan, so it's quite powerful here.
My experience is that with a large amount of data, it's significantly faster to just do everything within the ZomboDB text query. If you have a good Elasticsearch cluster, it's VERY fast!
2) ZomboDB stores the tokens of each column in Elasticsearch, not the whole row. ZomboDB also operates within Postgres' „Access Method API“ interface such that it's not very different than a standard „btree“ index, as far as Postgres is concerned. As such, your source of truth is *always* Postgres and the ZomboDB index stores the minimal amount of data in Elasticsearch to enable text searching.
3) ZomboDB has its own query language that supports quite a bit of the Elasticsearch QueryDSL (not everything, but very close!). Full boolean expressions are supported. If you needed to expose the functionality of a random Elasticsearch plugin to ZomboDB that would likely require changes to ZomboDB. If you see this is a thing you'd need to do often, I'd love to hear more details on ZomboDB's github page.
Thanks for your interest and I hope my answers have been helpful!