我正在努力提高人气,如下所述。我使用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"
}
}
}
问题是什么?有什么建议吗?
答案 0 :(得分:1)
我已经发现设置Index: no
是个问题。当我根本不设置它并且不确定为什么我不应该设置索引:不,因为我不希望将其编入索引。如下所示,作为魅力,但我不明白其中的差异。如果有人有解释。我很感激。
"OrderCount": {
"null_value": 0,
"store": true,
"type": "integer"
},