简体   繁体   中英

elasticsearch vs solr regarding data structure/query features

I've seen many questions (and good answers) comparing the scalability, speed, and deployment scenarios for elasticsearch and Solr, but I can't seem to find good information regarding any differences or relative strengths of how queries are able to work with the indexed data.

Specifically, I'm interested in differences between elasticsearch and Solr in the following areas:

  1. : how do their handling of faceting differ, or are they basically the same? :他们对刻面的处理方式有何不同,或者它们基本相同?

  2. : seems that elasticsearch has a flexibility edge in that schemas can be defined on the fly via the rest API, whereas Solr requires them to be pre-defined in schemas.xml (I haven't seen specific confirmation of this difference, though). :似乎elasticsearch具有灵活性优势,因为模式可以通过其余API动态定义,而Solr要求它们在schemas.xml中预先定义(我没有看到这种差异的具体确认,尽管)。 Are there substantive differences in how schemas are used beyond that?

  3. : are there differences between how data can be optimized for specific searches? :如何针对特定搜索优化数据之间存在差异? eg I've seen mention of things like field duplication and query tokenization filters for Solr that add to the search algorithm's customizability, but haven't seen much info of the same sort regarding elasticsearch, but maybe it just handles all this stuff automatically?

  4. : are the query DSLs basically just as expressive as each other, or are there fundamental differences? :查询DSL基本上是表达彼此,还是存在根本区别?

  5. : what facilities are there for hardcoding or massaging the algorithmic search results? :有哪些设施可用于硬编码或按摩算法搜索结果?

Again, please note that I'm not at all interested in speed/scalbility/performace issues, just the expressivity of the search data structuring and query language--Possibly this whole question could be summarized as: 吗?

  1. faceting is nearly the same, except that ES allows it also via dynamic scripts and Solr allows facet pagination. Also in Solr there is a convenient facetting schema to do simple shop search style faceting (note: it is also relative easy with ES but not out of the box). ES faceting can be more powerful as there is no need to bind facets to the filterquery.

  2. for ES schema can be updated via API! or define it in a file and is specified for a type . for Solr you create a config file per index . BTW: with dynamic fields your have a less restrictive schema for Solr.

  3. ES misses only the autowarming feature (but this is performance related so not interesting for you ;)) and the group by feature. Otherwise both uses similar lucene stuff. ES allows a lot advanced combinations like it is possible in lucene. Parent child is similar to the group by feature and is not implemented in Solr IMO.

  4. The standard query for ES is formulated via JSON and so you can create nearly everything which you could create via lucene. In Solr you can do a lot of advanced stuff but often you need some fundamental knowledge of Solr stuff like local params etc. Have a look into this nice discussion .

  5. Do not understand this :)

is there a search I can perform or a data structure I can create in elasticsearch that I cannot replicate in Solr, or vice-versa?

In ES there is the percolator feature which is probably harder to implement with Solr. In ES you also have the versioning feature to implement optimistic locking, you have index aliasing and a scan query to deeply navigate through your index - not sure if Solr has similar features. Eg the aliasing helps to make a rolling index implementation. relative short.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM