0

是否可以像这样在弹性搜索中使用构面脚本和构面过滤器?

{
  "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 [No facet type found for [and]]]; }。

谢谢

4

2 回答 2

0

编辑不正确的答案。我离开它是因为上下文。澄清:and 是一个适当的过滤器,应该被facet_filter. 不知道怎么了。

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

所有方面都可以配置一个额外的过滤器(在查询 DSL 部分中解释)

所以你需要queryfacet_filter. And不是合适的过滤器(您收到的错误可能更清楚)

例如:

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

你可能想要这样的东西:

"facet_filter" : {
   "query_string": {
      "query": "..... ",
      "fields": [
         "judges.analyzed"
      ],
      "default_operator": "and",
      "analyze_wildcard": true
   }
}
于 2013-06-19T19:46:56.307 回答
0

过滤器的语法and是:

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

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

   "facet_filter": {
     "query": {
       "query_string": {
         "query": "..."
       }
     }
   }
于 2014-03-26T10:09:49.780 回答