在elasticsearch中搜索具有特定字段的类型?

时间:2014-03-06 14:40:22

标签: elasticsearch

说我有以下两个文档

DOC 1

 { "name" : "Frank",
   "age" : 82
 }

DOC 2

 { "gender" : "male",
   "age" : 74
 }

我如何检索具有name作为字段的文档列表,即在上面(通常很差)的示例中,我会运行一些查询,返回Doc 1的ID,因为它有{{1 }}。如果可以,我希望对其进行扩展,以便我可以搜索那些以name name AND作为字段的文档。

2 个答案:

答案 0 :(得分:1)

你不能使用exists过滤器吗?

http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/query-dsl-exists-filter.html

以下示例适用于我。

PUT existsindex
{
  "settings": {
    "number_of_replicas": 0,
    "number_of_shards": 1
  }
}

PUT existsindex/local/1
{
  "name":"Ian",
  "member":"yes"
}

PUT existsindex/local/2
{
  "name":"Roy"
}

GET existsindex/_search
{
  "filter": {
    "exists": {
      "field": "member"
    }
  }
}

答案 1 :(得分:1)

您可以使用exists filterbool filter的组合来执行此操作。您实际上将过滤具有指定字段的所有文档。下面是一个例子。

{
  "filter": {
    "bool": {
      "must": [
        {
          "exists": {
            "field": "name"
          }
        },
        {
          "exists": {
            "field": "age"
          }
        }
      ]
    }
  }
}
相关问题