elasticsearch:包含字段1或字段2的文档



我如何指示elasticsearch返回在以下字段之一中具有数据的所有文档:['field1','field2']?

I have try:

{
'query': {
    'bool':{
        'must':[
            'multi_match':{
                'fields':['field1','field2'],
                     'operator':'AND',
                     'tie_breaker':1.0,
                     'query': '*',
                     'type':'cross_fields'
                 }
             ]
         }
     }
}

我也试过:

{
    "query":{
        "wildcard":
            {
                 "field1":"*"
            }
        }
}

可以,但是:

{
    "query":{
        "wildcard":
            {
                 "field*":"*"
            }
        }
}

您可以在bool过滤器中使用两个存在的过滤器

作为一个例子,我建立了一个简单的索引,并给它一些数据:

PUT /test_index
POST /test_index/doc/_bulk
{"index":{"_id":1}}
{"field1":"foo","field2":"bar"}
{"index":{"_id":2}}
{"field2":"foo","field3":"bar"}
{"index":{"_id":3}}
{"field3":"foo","field4":"bar"}
{"index":{"_id":4}}
{"field4":"foo","field5":"bar"}

如果我想找到所有具有"field1 "或"field3"的文档,我可以这样做:

POST /test_index/_search
{
   "query": {
      "filtered": {
         "query": {
            "match_all": {}
         },
         "filter": {
            "bool": {
               "should": [
                  { "exists": { "field": "field1" } },
                  { "exists": { "field": "field3" } }
               ]
            }
         }
      }
   }
}

它返回我所期望的:

{
   "took": 1,
   "timed_out": false,
   "_shards": {
      "total": 1,
      "successful": 1,
      "failed": 0
   },
   "hits": {
      "total": 3,
      "max_score": 1,
      "hits": [
         {
            "_index": "test_index",
            "_type": "doc",
            "_id": "1",
            "_score": 1,
            "_source": {
               "field1": "foo",
               "field2": "bar"
            }
         },
         {
            "_index": "test_index",
            "_type": "doc",
            "_id": "2",
            "_score": 1,
            "_source": {
               "field2": "foo",
               "field3": "bar"
            }
         },
         {
            "_index": "test_index",
            "_type": "doc",
            "_id": "3",
            "_score": 1,
            "_source": {
               "field3": "foo",
               "field4": "bar"
            }
         }
      ]
   }
}
下面是我使用的代码: http://sense.qbox.io/gist/991b828de250e5125fd372bf7e6b066acec55fcd

最新更新