Indexing Elasticsearch如何查询映射为对象的字段
我有一些索引到elasticsearch的文档。文档结构如下所示Indexing Elasticsearch如何查询映射为对象的字段,indexing,
elasticsearch,Indexing,
elasticsearch,我有一些索引到elasticsearch的文档。文档结构如下所示 { "body": { "gnip": { "matching_rules": [ { "tag": "NationalIssues90" } ], "urls": [ {
{
"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}}}}但结果也是空的。