在Solr中,我可以编写一些查询时间插件来进行某种查询重写(生成子查询等),但在ElasticSearch中,我找不到类似的东西。例如,在Solr中,我创建了一个插件,它创建一个OR子查询,对原始查询进行低乘法提升(默认情况下,原始查询为AND)。这里的重点是先显示AND结果,然后显示OR结果,因为单独运行OR查询并不能保证所有查询词都先显示结果。
这里有一个例子:
- 假设我有一个查询"a B C"
- 此插件将把此查询转换为以下内容:
- 和(A,B,C)+或(A,B,C)*0.000001
我通过在Solr中编写一个简单的运行时插件实现了这一点,但不知道如何在ElasticSearch中做到这一点。
任何指针都将不胜感激。
如果您正在研究boosting,则无需编写插件,只需使用查询DSL(带有should子句的bool查询)或function_score查询即可获得更高级的用例。如果这还不够,你可以通过插件编写自己的查询,但这是为了更高级的用例,你通常不需要这样做。