我已经看到很多比较弹性搜索和 Solr 的可扩展性、速度和部署场景的问题(和好的答案),但我似乎找不到关于查询如何与索引数据。
具体来说,我对 elasticsearch 和 Solr 在以下方面的差异感兴趣:
刻面能力:它们对刻面的处理有何不同,或者它们基本相同?
模式处理:似乎elasticsearch具有灵活性优势,因为可以通过其余API动态定义模式,而Solr要求它们在schemas.xml中预先定义(虽然我还没有看到这种差异的具体确认)。除此之外,模式的使用方式是否存在实质性差异?
索引过滤器:针对特定搜索优化数据的方式之间是否存在差异?例如,我已经看到提到诸如 Solr 的字段重复和查询标记化过滤器之类的东西,它们增加了搜索算法的可定制性,但没有看到太多关于弹性搜索的相同类型的信息,但也许它只是自动处理所有这些东西?
查询表达能力:查询 DSL 基本上是一样的表达能力,还是有根本的区别?
“提升”和/或结果定制:有哪些工具可用于硬编码或按摩算法搜索结果?
再次请注意,我对速度/可扩展性/性能问题完全不感兴趣,只对搜索数据结构和查询语言的表达能力感兴趣——可能整个问题可以概括为:是否有我可以执行的搜索或我可以在 elasticsearch 中创建但无法在 Solr 中复制的数据结构,反之亦然?