将普及错误提升为“缺少字段值[x]”

时间:2016-04-11 14:32:41

标签: elasticsearch

我正在努力提高人气,如下所述。我使用2.0.2版本的ElasticSearch

{
   "query": {
      "function_score": {
         "query": {
            "bool": {
               "should": [
                  {
                     "multi_match": {
                        "type": "best_fields",
                        "query": "search",
                        "fields": [                          
                           "Name^7",
                           "ShortDescription^6"
                        ]
                     }
                  }
               ]
            }
         },
         "field_value_factor": {
            "field": "OrderCount"
         }
      }
   }
}

虽然OrderCount永远不会为null而是0,但我收到错误消息

   "error": {
      "root_cause": [
         {
            "type": "exception",
            "reason": "Missing value for field [OrderCount]"
         }
      ],
      "type": "search_phase_execution_exception",
      "reason": "all shards failed",
      "phase": "query",
      "grouped": true,
      "failed_shards": [

我查询了查询,如果有任何空值但查询没有返回结果。

{
  "query": {
    "filtered": {
      "filter": {
        "missing": {
          "field": "OrderCount"
        }
      }
    }
  }
}

我尝试设置“null_value”:0如下所示,但仍然收到此错误消息

},
"OrderCount": {
"null_value": 0,
"index": "no",
"store": true,
"type": "integer"
},

我甚至使用下面的过滤器扩展了我的查询,但错误就是那里。

  "functions": [
            {
                "filter":{
                  "exists":{
                     "field":"OrderCount"
                  }
               },
               "field_value_factor": {
                  "field": "OrderCount"             
               }
            }   
      }

问题是什么?有什么建议吗?

1 个答案:

答案 0 :(得分:1)

我已经发现设置Index: no是个问题。当我根本不设置它并且不确定为什么我不应该设置索引:不,因为我不希望将其编入索引。如下所示,作为魅力,但我不明白其中的差异。如果有人有解释。我很感激。

"OrderCount": {
"null_value": 0,
"store": true,
"type": "integer"
},