检索多值数组字段时出现空指针异常

时间:2012-11-20 06:35:08

标签: elasticsearch

我在Elasticsearch索引中访问一些多值数组时遇到问题 我在中使用查询 retrieving the multivalued array from elasticsearch 但是我的索引中的一些文档存在null poiter异常,其中存在用于搜索的数组。当我使用queryString查询而不是match_all时发生这种情况

{
took: 3
timed_out: false
_shards: {
    total: 2
    successful: 1
    failed: 1
    failures: [
        {
            status: 500
            reason: NullPointerException[null]
        }
    ]
}

我的查询是

{
 "query":{
  "query_string":{
  "query":"report","default_field":"Content"
 }
},
"script_fields": {
"entity_facets": {
"script": "result=[];foreach(facet : _source.Categories.Types.Events)      

{if(facet.event==event) result.add(facet);} result",
 "params": {
 "event":"AnalystEvent"
  }
  }
 }

}

编辑: 我有一个索引 https://gist.github.com/4129488 我通过运行查询得到了

 {
  "from": "0",
  "size": "100",
  "query": {
   "bool": {
   "must": [
   {
    "bool": {
    "must": [
    {
     "query_string": {
     "query": "confronted",
     "default_field":"Content"
    }
   },
   {
    "range": {
    "actualTimeStamp": {
    "from": "23-07-2012 10:04:52",
    "to": "23-09-2012 10:04:52"
   }
 }
 }
  ]
 }
 },
 {
  "bool": {
  "should": [
  {
    "fuzzy": {
    "SourceName": {
     "value": "Economic_Times"
   }
   }
   },
   {
     "fuzzy": {
     "SourceName": {
     "value": "reuters"
    }
   }
  }
 ]
 }
}
]
}
}
}

但是在上面的查询中使用脚本字段时我没有得到这个索引!!

1 个答案:

答案 0 :(得分:0)

您可能有一条记录,它不存储_source,或者它的_source没有类别,或类别没有任何类型或类型没有任何事件。只需添加if语句即可检查这些条件。