Elasticsearch:Facet脚本和facet_filter

时间:2013-06-19 18:47:12

标签: elasticsearch facets

是否可以在elasticsearch中使用facet脚本和构面过滤器?

{
  "facets": {
    "judges": {
      "terms": {
        "field": "judges.untouched",
        "size": 10,
        "all_terms": false,
        "script": { "script": "...", "params": { }}
      },
      "global_facets": false,
      "facet_filter": {
        "and": [
          {
            "query": {
              "query_string": {
                "query": "..... ",
                "fields": [
                  "judges.analyzed"
                ],
                "default_operator": "and",
                "analyze_wildcard": true
              }
            }
          }
        ]
      }
    }
  }
}

因为当我运行此查询时,elasticsearch会引发错误:Parse Failure [找不到[and]]的facet类型]; }。

由于

2 个答案:

答案 0 :(得分:0)

编辑答案不正确。我因为背景而离开了。 澄清一下:and是一个合适的过滤器,应由facet_filter接受。不确定是什么。

未经测试,但来自文档:(http://www.elasticsearch.org/guide/reference/api/search/facets/

  

可以使用额外的过滤器配置所有方面(在“查询DSL”部分中进行了解释)

因此,您需要在query中添加适当的facet_filterAnd不是一个合适的过滤器(您收到的错误可能更清楚)

例如:

"facet_filter" : {
   "term" : { "user" : "kimchy"}
} 

你可能想要这样的东西:

"facet_filter" : {
   "query_string": {
      "query": "..... ",
      "fields": [
         "judges.analyzed"
      ],
      "default_operator": "and",
      "analyze_wildcard": true
   }
}

答案 1 :(得分:0)

and过滤器的语法是:

"facet_filter": {
  "and": {
    "filters": [
       {
         // filter definition
       },
       {
         // another filter definition
       }
    ]
  }
}

但是您只使用一个条件,因此不需要and过滤器。 你应该只有:

   "facet_filter": {
     "query": {
       "query_string": {
         "query": "..."
       }
     }
   }