3 ms·
Shameless plug from someone who want this project to flourish. Check https://vespa.ai https://vespa.ai as an alternative to Elasticsearch. Migrating from a ES t
by bratao 7y ago
Shameless plug from someone who want this project to flourish.
Check https://vespa.ai https://vespa.ai as an alternative to Elasticsearch. Migrating from a ES to it, I got a faster search, never had to face a unhealthy node and native tensor support (And Native ANN is coming soon https://github.com/vespa-engine/vespa/issues/9747 https://github.com/vespa-engine/vespa/issues/9747).
Very mature, and still progressing at a neck-break rate (https://blog.vespa.ai https://blog.vespa.ai)
- atombender 7y agoVespa looks pretty good, at least in terms of performance and operation. I've been evaluating it myself. I'm less happy about everything else. It's got a mishmash of odd APIs, lots of XML, several query languages, lots of weird little quirks. It doesn't feel modern. It's pretty clear that this is originally an in-house project, developed over many years by many people, where not as much effort has been spent on consistent/cohesive design or documentation. One rough area is the approach to schemas and indexing. Rather than let you define a "clean" schema and put in your data and then have Vespa index it in all the ways it knows about, you're forced to essentially reshape your data into a format compatible with Vespa, which brings with it some severe restrictions. For example, Vespa will not index arbitrarily nested structured data. If you have something like {categories: [{id: 1}]}, Vespa will not index that. You have to flatten any array data to the top level. Nested maps and arrays are mostly not supported, although it's hard to tell from the documentation what is supported. Vespa is also very obviously skewed toward ranking, not filtering. You can't search by exact string matching: You can't do something like "topic = 'news'". You only get case insensitive substring search. It's got lot of ranking functions but very little that's optimized for filtering. Overall, I'm a bit surprised that Vespa's authors position it as an Elasticsearch competitor, because you certainly cannot just port an app that uses ES over to it. To be sure, it's got lots of interesting features such as ML integration, and, again, performance and clustering design seems good. But it still feels very much like a niche product.
- bratao 7y agoI migrated from ES and for me, I do not agree about the feeling that it doesn't feel modern. The Middleware logic container and Live reconfiguration it is mind blowing. About those two things: - Nested (For my use cases, this is a problem I do not have. For more complex cases, there is parent-child https://blog.vespa.ai/post/174589826190/parent-child-in-vespa https://blog.vespa.ai/post/174589826190/parent-child-in-vesp...) - Exact match ( use the exact match https://docs.vespa.ai/documentation/reference/search-definitions-reference.html#match https://docs.vespa.ai/documentation/reference/search-definit... )
- draw_down 7y agoGP: I have this problem with Vespa. Parent: I do not have that problem.
- atombender 7y agoBy modern I mean the approach to configuring and running, and the myriad of languages used: Antiquated XML for some things, a homegrown DSL for others, JSON for query results, then multiple languages for expressing various parts of the query -- it's pretty chaotic. Another thing that felt antiquated: The whole notion of uploading an "application". I can appreciate the benefits of controlling the lifecycle of the configuration and have Vespa distribute it to nodes. But when you start out, that "application" is just one or two files, and yet you have to create a whole directory structure for it, as opposed to just POSTing individual configs to REST endpoints like you can do with ES. The heavy-handedness of it feels very "Java". The document you linked to is a different type of exact match. I've been through this, and even posted a Github issue. Mysteriously, a Vespa developer replied that nobody had ever needed exact string matching, so nobody had bothered to implement it. Parent/child is not applicable to what I was talking about, I think. I'm not talking about hierarchical relationships. For my part, most of my work is in structured data, not text or vector-based ranking, and Vespa really doesn't seem to be designed for that. ES also has a very, very good aggregation API. Vespa's aggregation syntax is odd and seemingly much more limited.