我正在尝试将两个功能组合起来,这些功能可以单独运行,但却无法让它们协同工作.
*1)正如在solr wiki上记录的那样,我可以标记特定的fq然后将其排除在我的facet.field上.即使选择一个值,这将使我的方面的计数保持不变,如下所示:
fq={!tag=pt}price:100&facet=true&facet.field={!ex=pt}price
Run Code Online (Sandbox Code Playgroud)
*2)我想使用facet.query如下:
facet=true&facet.query=price:[0 TO 100]&facet.query=price:[100 TO *]
Run Code Online (Sandbox Code Playgroud)
所以我想结合*1和*2,这是我尝试的:
fq={!tag=pt}price:[0 to 100]&facet=true&facet.query={!ex=pt}price:[0 TO 100]&facet.query={!ex=pt}price:[100 TO *]
Run Code Online (Sandbox Code Playgroud)
实际发生的是我从Solr收到的回复:
<lst name="facet_queries">
<int name="{!ex=pt}price:[0 TO 100]">8</int>
<int name="{!ex=pt}price:[100 TO *]">19</int>
</lst>
Run Code Online (Sandbox Code Playgroud)
为什么名称的{!ex = pt}部分?这搞砸了我的一些逻辑.也许我误用了它,如果是的话,那么正确的方法是什么?
我期待的是:(如果运行*2没有*1,我收到的相同)
<lst name="facet_queries">
<int name="price:[0 TO 100]">8</int>
<int name="price:[100 TO *]">19</int>
</lst>
Run Code Online (Sandbox Code Playgroud)
这是有道理的,因为如果我正在运行*1这就是我在facet_fields中收到的内容:
<lst name="facet_fields">
<lst name="price">
<int name="80">8</int>
<int name="150">19</int>
</lst>
</lst>
Run Code Online (Sandbox Code Playgroud)
它没有说name ="{!ex = pt}价格"
我试图在elasticsearch的脚本语言中操纵日期painless.具体来说,我试图增加4小时,即14,400秒.
{
"script_fields": {
"new_date_field": {
"script": {
"inline": "doc['date_field'] + 14400"
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
这引发了 Cannot apply [+] operation to types [org.elasticsearch.index.fielddata.ScriptDocValues.Longs] and [java.lang.Integer].
谢谢