说我有以下两个文档
DOC 1
{ "name" : "Frank",
"age" : 82
}
DOC 2
{ "gender" : "male",
"age" : 74
}
我如何检索具有name
作为字段的文档列表,即在上面(通常很差)的示例中,我会运行一些查询,返回Doc 1的ID,因为它有{{1 }}。如果可以,我希望对其进行扩展,以便我可以搜索那些以name
name
AND
作为字段的文档。
答案 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 filter和bool filter的组合来执行此操作。您实际上将过滤具有指定字段的所有文档。下面是一个例子。
{
"filter": {
"bool": {
"must": [
{
"exists": {
"field": "name"
}
},
{
"exists": {
"field": "age"
}
}
]
}
}
}