如何过滤facet以仅显示特定术语

时间:2013-06-25 15:28:56

标签: elasticsearch faceted-search

我想要一个方面只显示具体的条款。我已经尝试了过滤器和facet_filter类型terms,但两者都显示了与terms过滤器中给定的不同的其他术语。

作为过滤器

{
    "query": {
        "filtered": {
            "query": { "match_all": {} },
            "filter": {
                "terms": { "text": [ "bogota", "antioquia", "medellin", "cali", "barranquilla", "bucaramanga", "cucuta", "pasto", "manizales", "caldas", "santander" ] }
            }
        }
    },
    "facets": {
        "dictionary": {
            "terms": {
                "field": "text",
                "size": "10"
            },
        }
    }
};

作为构面过滤器

{
    "query": {
        "match_all": {}
    },
    "filter": {
        "terms": { "text": [ "bogota", "antioquia", "medellin", "cali", "barranquilla", "bucaramanga", "cucuta", "pasto", "manizales", "caldas", "santander" ] }
    },
    "facets" : {
        "dictionary" : {
            "terms" : {
                "field" : "text"
            },
            "facet_filter": {
                "terms": { "text": [ "bogota", "antioquia", "medellin", "cali", "barranquilla", "bucaramanga", "cucuta", "pasto", "manizales", "caldas", "santander" ] }
            }
        }
    }
};

1 个答案:

答案 0 :(得分:0)

尝试删除"query": {"match_all"...子句。

例如,我有一个与你的工作方式非常相似的工作方面,我已经进行了广泛的测试。我会保持原样,所以你可以比较:

{"facets": {
  "keywords":{
    "terms":
      {"size":100,"field":"text","order":"count","exclude":["you"]}
    }
  },
  "query":{
    "filtered":{
      "filter":{
         "and":[{
           "terms":
             {"_type":["dms","click_events"]}
           },
           {
           "range":{
             "created_at":{"from":"2013-05-26T04:00:00+00:00"}
           }
         }]
       }
     }
   }
 }

这已成功过滤过滤查询中的“_type”:[“dms”,“click_events”]条款。