elasticsearch,Indexing,elasticsearch" /> elasticsearch,Indexing,elasticsearch" />

Indexing Elasticsearch如何查询映射为对象的字段

Indexing Elasticsearch如何查询映射为对象的字段,indexing,elasticsearch,Indexing,elasticsearch,我有一些索引到elasticsearch的文档。文档结构如下所示 { "body": { "gnip": { "matching_rules": [ { "tag": "NationalIssues90" } ], "urls": [ {

我有一些索引到elasticsearch的文档。文档结构如下所示

{
    "body": {
        "gnip": {
            "matching_rules": [
                {
                    "tag": "NationalIssues90"
                }
            ],
            "urls": [
                {
                    "url": "http://t.co/CKqZeXPLqK"
                }
            ]
        },
        "body": "RT @fayez_malki: يطلب الله ثم يطلب #الأمير_محمد_بن_سلمان ومنا الي الشهم #المطنوخ_محمد بن سلمان http://t.co/CKqZeXPLqK",
        "postedTime": "2015-10-11T07:53:20.000Z",
        "provider": {
            "link": "http://www.twitter.com",
            "displayName": "Twitter",
            "objectType": "service"
        },
        "twitter_entities": {
            "hashtags": [
                {
                    "text": "المطنوخ_محمد"
                }
            ],
            "media": [
                {
                    "media_url_https": "https://pbs.twimg.com/ext_tw_video_thumb/652619994493284352/pu/img/awivyn9cnau285PQ.jpg",
                    "media_url": "http://pbs.twimg.com/ext_tw_video_thumb/652619994493284352/pu/img/awivyn9cnau285PQ.jpg",
                }
            ]
        },
        "id": "tag:search.twitter.com,2005:653116156212064257",
        "verb": "share",
    },
    "collection": "NationalIssues"
}
在json的末尾有一个名为twitter_entities的字段。此字段的映射如下所示

{
    "twitter_entities": {
        "type": "object",
        "dynamic": "strict",
        "properties": {
            "hashtags": {
                "type": "object",
                "dynamic": "strict",
                "properties": {
                    "indices": {
                        "type": "long",
                        "index": "no",
                        "store": false
                    },
                    "text": {
                        "type": "string",
                        "index": "analyzed",
                        "store": true
                    }
                }
            },
            "media": {
                "type": "object",
                "dynamic": "strict",
                "properties": {
                    "media_url": {
                        "type": "string",
                        "index": "analyzed",
                        "store": true
                    },
                    "media_url_https": {
                        "type": "string",
                        "index": "analyzed",
                        "store": true
                    }
                }
            }
        }
    }
}
我正在尝试获取所有包含媒体url字段中的值的文档。换言之,我想获取所有媒体url字段不为空的文档。我使用了以下查询,但所有查询都返回空值,而我确信很多文档在此字段中都有值

{
  "query": {
    "match": {
      "body.twitter_entities.media.media_url": {
        "query": "http*",
        "operator": "AND"
      }
    }
  }
}
这是另一个尝试,但没有任何运气

{
    "query" : {
        "term" : { "body.twitter_entities.media.media_url" : "http*" }
    }
}
我还尝试了下面的查询,结果是一样的

{
    "query": {
        "bool": {
            "must": [

                {
                    "query_string": {
                        "fields": [
                            "body.twitter_entities.media.media_url"
                        ],
                        "query": "*",
                        "use_dis_max": true
                    }
                }

            ]
        }
    }
}

我怀疑映射有问题,但我不确定问题出在哪里。

您尝试过过滤器吗?听起来比通配符查询字符串更合适。我尝试了这个{query:{constant_score:{filter:{exists:{field:body.twitter_entities.media.media_url}}}}但结果也是空的。