使用bool必须匹配并匹配一个elasticsearch查询中的_all

时间:2017-06-20 12:41:43

标签: node.js elasticsearch

这是我第一次尝试使用elasticsearch,我试图获取必须与给定参数匹配的所有文档,并立即使用match _all字段。我的架构看起来像这样

{
"mappings":{
  "product":{
    "_all":{"enabled":true},
      "properties":{
        "category":{"type":"text"},
        "brand":{"type":"text"},
        "model":{"type":"text"},
        "description":{"type":"text"}
      }
    }
  }
}

所以,假设我想找到所有类似“手机”类别的产品,并且在任何属性中都有“完美”字样。我只使用

没有任何问题
_search

"query": {
  "match": {
    "_all": "perfect"
  }
}

但我无法找到将其与同时匹配类别相结合的解决方案。实现这一目标的最佳方法是什么?如果这很重要我正在使用官方的elasticsearch node.js插件。

1 个答案:

答案 0 :(得分:1)

你必须使用bool查询 - 在这里你可以组合更多可以搜索的属性。请参阅elasticsearch文档:https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-bool-query.html

以下是doc中的示例:

GET _search
{
  "query": {
    "bool": {
      "must": {
        "match_all": {}
      },
      "filter": {
        "term": {
          "status": "active"
        }
      }
    }
  }
}