elasticsearch,Parsing,elasticsearch" /> elasticsearch,Parsing,elasticsearch" />

Parsing 查询在ES(v0.90.3)中工作,但不在任何其他版本中工作。目前正在试用(v1.2.1)

Parsing 查询在ES(v0.90.3)中工作,但不在任何其他版本中工作。目前正在试用(v1.2.1),parsing,elasticsearch,Parsing,elasticsearch,日志: Query : [ {"query": {"custom_score": {"filter": {"prefix": {"user_account.account_number": "670" } }, "query": {"filtered": {"query": {"match_all":[] }, "filter": {"and"

日志:

Query : 
[
 {"query":
  {"custom_score":
   {"filter":
    {"prefix":
     {"user_account.account_number":
         "670"
     }
    },
    "query":
     {"filtered":
      {"query":
       {"match_all":[]
       },
       "filter":
       {"and":
        [{"term":
          {"user_account.account_id":1
          }
         },
         {"term":
          {"user_account.type":"super"
          }
         }
        ]
       }
      }
     },
    "script":"random()"
   }
  },
  "from":0,"size":1
 }
]

新版本中不推荐使用自定义分数。使用函数分数查询而不是自定义分数

自定义分数查询

SearchPhaseExecutionException[Failed to execute phase [query], all shards failed; shardFailures {[iPTJT-rkQ2uCfxcC7DmmXg][xpay][2]: SearchParseException[[user][2]: from[-1],size[-1]: Parse Failure [Failed to parse source [[{"query":{"custom_score":{"filter":{"prefix":{"user_account.account_number":"670"}},"query":{"filtered":{"query":{"match_all":[]},"filter":{"and":[{"term":{"user_account.account_id":1}},{"term":{"user_account.type":"i"}}]}}},"script":"random()"}},"from":0,"size":1}]]]]; nested: ElasticsearchParseException[Expected START_OBJECT but got START_ARRAY null]; }{[iPTJT-rkQ2uCfxcC7DmmXg][xpay][3]: SearchParseException[[xpay][3]: from[-1],size[-1]: Parse Failure [Failed to parse source [[{"query":{"custom_score":{"filter":{"prefix":{"user_account.account_number":"670"}},"query":{"filtered":{"query":{"match_all":[]},"filter":{"and":[{"term":{"user_account.account_id":1}},{"term":{"user_account.type":"i"}}]}}},"script":"random()"}},"from":0,"size":1}]]]]; nested: ElasticsearchParseException[Expected START_OBJECT but got START_ARRAY null]; }{[iPTJT-rkQ2uCfxcC7DmmXg][xpay][0]: SearchParseException[[xpay][0]: from[-1],size[-1]: Parse Failure [Failed to parse source [[{"query":{"custom_score":{"filter":{"prefix":{"user_account.account_number":"670"}},"query":{"filtered":{"query":{"match_all":[]},"filter":{"and":[{"term":{"user_account.account_id":1}},{"term":{"user_account.type":"i"}}]}}},"script":"random()"}},"from":0,"size":1}]]]]; nested: ElasticsearchParseException[Expected START_OBJECT but got START_ARRAY null]; }{[iPTJT-rkQ2uCfxcC7DmmXg][xpay][1]: SearchParseException[[xpay][1]: from[-1],size[-1]: Parse Failure [Failed to parse source [[{"query":{"custom_score":{"filter":{"prefix":{"user_account.account_number":"670"}},"query":{"filtered":{"query":{"match_all":[]},"filter":{"and":[{"term":{"user_account.account_id":1}},{"term":{"user_account.type":"super"}}]}}},"script":"random()"}},"from":0,"size":1}]]]]; nested: ElasticsearchParseException[Expected START_OBJECT but got START_ARRAY null]; }]
变成

"custom_score": {
"params": {
    "param1": 2,
    "param2": 3.1
},
"query": {...},
"script": "_score * doc['my_numeric_field'].value / pow(param1, param2)"
}

尝试将
的“match_all”:[]
替换为
的“match_all”:{}

为什么将查询包装在数组中?
"function_score": {
"boost_mode": "replace",
"query": {...},
"script_score": {
    "params": {
        "param1": 2,
        "param2": 3.1
    },
    "script": "_score * doc['my_numeric_field'].value / pow(param1, param2)"
}
}