Elasticsearch面向过滤器

时间:2014-08-26 08:02:19

标签: elasticsearch filter yii2 facet

我使用elasticsearch创建了一个方面,但我想过滤它只是为了特定的单词。

{
  ...
  "facets": {
    "my_facets": {
      "terms": {
        "field": "description",
        "size": 1000
      }
    }
  }
}

结果包含描述中的所有单词。

{
  "my_facet": {
    "_type": "terms",
    "missing": 0,
    "total": 180,
    "other": 0,
    "terms": [
      {
        "term": "și",
        "count": 1
      },
      {
        "term": "światłowska",
        "count": 1
      },
      {
        "term": "łódź",
        "count": 1
      }
    ]
  }
}

我希望我的方面只包含针对特定单词的分析,而不是针对描述中找到的整个单词 我已经尝试在我的方面使用查询匹配,但它进行了整体分析 如下

{
  "query_Facet_test": {
    "query": {
      "match": {
        "description": "word1 word2"
      }
    }
  }
}

我得到的结果:

{
  "query_Facet_test": {
    "_type": "query",
    "count": 1
  }
}

1 个答案:

答案 0 :(得分:1)

您可以使用这样的bool查询来获取查询方面

{
    "query": {
        "bool": {
            "must": [
                {
                    "match": {
                        "description": "word1"
                    }
                },
                {
                    "match": {
                        "description": "word2"
                    }
                }
            ]
        }
    },
    "facets": {
        "my_facets": {
            "terms": {
                "field": "description",
                "size": 1000
            }
        }
    }
}