Elasticsearch - field_value_factor,缺少参数

IvR*_*mUm 2 python go amazon-web-services elasticsearch

所以我终于设置了elasticsearch数据库并将数据导入其中。

有时,当我尝试从前端请求数据时,我会收到 500 错误(并非总是如此,只是有时)。

我尝试向 POSTMAN 请求数据(以查看 ES 错误消息)。

我有:

{
  "error": "SearchPhaseExecutionException[Failed to execute phase [query], all shards failed; shardFailures {[9m4uVcf3TLmQ9Kr7z_fSpQ][text][0]: QueryPhaseExecutionException[[text][0]: query[filtered(function score (blended(terms: [url_words:test, domain_words:test, title:test, body:test]), functions: [{filter(*:*), function [org.elasticsearch.common.lucene.search.function.FieldValueFactorFunction@56319fc9]}{filter(*:*), function [org.elasticsearch.common.lucene.search.function.FieldValueFactorFunction@60b46f02]}]))->cache(_type:page)],from[0],size[25]: Query Failed [Failed to execute main query]]; nested: ElasticsearchException[Missing value for field [lang_en]]; }{[9m4uVcf3TLmQ9Kr7z_fSpQ][text][1]: QueryPhaseExecutionException[[text][1]: query[filtered(function score (blended(terms: [url_words:test, domain_words:test, title:test, body:test]), functions: [{filter(*:*), function [org.elasticsearch.common.lucene.search.function.FieldValueFactorFunction@3ca7d41e]}{filter(*:*), function [org.elasticsearch.common.lucene.search.function.FieldValueFactorFunction@63daf999]}]))->cache(_type:page)],from[0],size[25]: Query Failed [Failed to execute main query]]; nested: ElasticsearchException[Missing value for field [lang_en]]; }{[9m4uVcf3TLmQ9Kr7z_fSpQ][text][2]: QueryPhaseExecutionException[[text][2]: query[filtered(function score (blended(terms: [url_words:test, domain_words:test, title:test, body:test]), functions: [{filter(*:*), function [org.elasticsearch.common.lucene.search.function.FieldValueFactorFunction@27521539]}{filter(*:*), function [org.elasticsearch.common.lucene.search.function.FieldValueFactorFunction@66dbac2b]}]))->cache(_type:page)],from[0],size[25]: Query Failed [Failed to execute main query]]; nested: ElasticsearchException[Missing value for field [lang_en]]; }{[9m4uVcf3TLmQ9Kr7z_fSpQ][text][3]: QueryPhaseExecutionException[[text][3]: query[filtered(function score (blended(terms: [url_words:test, domain_words:test, title:test, body:test]), functions: [{filter(*:*), function [org.elasticsearch.common.lucene.search.function.FieldValueFactorFunction@73bb4f5e]}{filter(*:*), function [org.elasticsearch.common.lucene.search.function.FieldValueFactorFunction@112dcf1c]}]))->cache(_type:page)],from[0],size[25]: Query Failed [Failed to execute main query]]; nested: ElasticsearchException[Missing value for field [lang_en]]; }{[9m4uVcf3TLmQ9Kr7z_fSpQ][text][4]: QueryPhaseExecutionException[[text][4]: query[filtered(function score (blended(terms: [url_words:test, domain_words:test, title:test, body:test]), functions: [{filter(*:*), function [org.elasticsearch.common.lucene.search.function.FieldValueFactorFunction@b650549]}{filter(*:*), function [org.elasticsearch.common.lucene.search.function.FieldValueFactorFunction@7fbe90f4]}]))->cache(_type:page)],from[0],size[25]: Query Failed [Failed to execute main query]]; nested: ElasticsearchException[Missing value for field [lang_en]]; }]",
  "status": 500
}
Run Code Online (Sandbox Code Playgroud)

这是请求正文:

{
      "query": {
        "function_score": {
          "query": {
            "multi_match": {
              "query": "test",
              "minimum_should_match": "-25%",
              "type": "cross_fields",
                  "tie_breaker": 0.5,
                  "fields": ["title^3", "body", "url_words^2", "domain_words^8"]
            }

          },
          "functions": [{
                "field_value_factor": {
              "field": "rank",
              "factor": 1
            }
        },{
                        "field_value_factor": {
                "field": "lang_en"
            }
                }]
        }
      },
      "from": 0,
      "size": 25
    }
Run Code Online (Sandbox Code Playgroud)

我知道字段 [lang_en] 缺少值是问题所在。我用谷歌结果玩弄 es ,但没有成功。

ES版本:1.5.2

有任何想法吗 ?

编辑:

我添加了 "missing": 0, 到 secondary field_value_factor,但我得到了这个错误:

{
  "error": "SearchPhaseExecutionException[Failed to execute phase [query], all shards failed; shardFailures {[9m4uVcf3TLmQ9Kr7z_fSpQ][text][0]: SearchParseException[[text][0]: from[-1],size[-1]: Parse Failure [Failed to parse source [{\n      \"query\": {\n        \"function_score\": {\n          \"query\": {\n            \"multi_match\": {\n              \"query\": \"test\",\n              \"minimum_should_match\": \"-25%\",\n              \"type\": \"cross_fields\",\n                  \"tie_breaker\": 0.5,\n                  \"fields\": [\"title^3\", \"body\", \"url_words^2\", \"domain_words^8\"]\n            }\n\n          },\n          \"functions\": [{\n                \"field_value_factor\": {\n              \"field\": \"rank\",\n              \"factor\": 1\n            }\n        },{\n                        \"field_value_factor\": {\n                \"field\": \"lang_en\",\n                \"missing\": 0\n            }\n                }]\n        }\n      },\n      \"from\": 0,\n      \"size\": 25\n    }\n]]]; nested: QueryParsingException[[text] field_value_factor query does not support [missing]]; }{[9m4uVcf3TLmQ9Kr7z_fSpQ][text][1]: SearchParseException[[text][1]: from[-1],size[-1]: Parse Failure [Failed to parse source [{\n      \"query\": {\n        \"function_score\": {\n          \"query\": {\n            \"multi_match\": {\n              \"query\": \"test\",\n              \"minimum_should_match\": \"-25%\",\n              \"type\": \"cross_fields\",\n                  \"tie_breaker\": 0.5,\n                  \"fields\": [\"title^3\", \"body\", \"url_words^2\", \"domain_words^8\"]\n            }\n\n          },\n          \"functions\": [{\n                \"field_value_factor\": {\n              \"field\": \"rank\",\n              \"factor\": 1\n            }\n        },{\n                        \"field_value_factor\": {\n                \"field\": \"lang_en\",\n                \"missing\": 0\n            }\n                }]\n        }\n      },\n      \"from\": 0,\n      \"size\": 25\n    }\n]]]; nested: QueryParsingException[[text] field_value_factor query does not support [missing]]; }{[9m4uVcf3TLmQ9Kr7z_fSpQ][text][2]: SearchParseException[[text][2]: from[-1],size[-1]: Parse Failure [Failed to parse source [{\n      \"query\": {\n        \"function_score\": {\n          \"query\": {\n            \"multi_match\": {\n              \"query\": \"test\",\n              \"minimum_should_match\": \"-25%\",\n              \"type\": \"cross_fields\",\n                  \"tie_breaker\": 0.5,\n                  \"fields\": [\"title^3\", \"body\", \"url_words^2\", \"domain_words^8\"]\n            }\n\n          },\n          \"functions\": [{\n                \"field_value_factor\": {\n              \"field\": \"rank\",\n              \"factor\": 1\n            }\n        },{\n                        \"field_value_factor\": {\n                \"field\": \"lang_en\",\n                \"missing\": 0\n            }\n                }]\n        }\n      },\n      \"from\": 0,\n      \"size\": 25\n    }\n]]]; nested: QueryParsingException[[text] field_value_factor query does not support [missing]]; }{[9m4uVcf3TLmQ9Kr7z_fSpQ][text][3]: SearchParseException[[text][3]: from[-1],size[-1]: Parse Failure [Failed to parse source [{\n      \"query\": {\n        \"function_score\": {\n          \"query\": {\n            \"multi_match\": {\n              \"query\": \"test\",\n              \"minimum_should_match\": \"-25%\",\n              \"type\": \"cross_fields\",\n                  \"tie_breaker\": 0.5,\n                  \"fields\": [\"title^3\", \"body\", \"url_words^2\", \"domain_words^8\"]\n            }\n\n          },\n          \"functions\": [{\n                \"field_value_factor\": {\n              \"field\": \"rank\",\n              \"factor\": 1\n            }\n        },{\n                        \"field_value_factor\": {\n                \"field\": \"lang_en\",\n                \"missing\": 0\n            }\n                }]\n        }\n      },\n      \"from\": 0,\n      \"size\": 25\n    }\n]]]; nested: QueryParsingException[[text] field_value_factor query does not support [missing]]; }{[9m4uVcf3TLmQ9Kr7z_fSpQ][text][4]: SearchParseException[[text][4]: from[-1],size[-1]: Parse Failure [Failed to parse source [{\n      \"query\": {\n        \"function_score\": {\n          \"query\": {\n            \"multi_match\": {\n              \"query\": \"test\",\n              \"minimum_should_match\": \"-25%\",\n              \"type\": \"cross_fields\",\n                  \"tie_breaker\": 0.5,\n                  \"fields\": [\"title^3\", \"body\", \"url_words^2\", \"domain_words^8\"]\n            }\n\n          },\n          \"functions\": [{\n                \"field_value_factor\": {\n              \"field\": \"rank\",\n              \"factor\": 1\n            }\n        },{\n                        \"field_value_factor\": {\n                \"field\": \"lang_en\",\n                \"missing\": 0\n            }\n                }]\n        }\n      },\n      \"from\": 0,\n      \"size\": 25\n    }\n]]]; nested: QueryParsingException[[text] field_value_factor query does not support [missing]]; }]",
  "status": 400
}
Run Code Online (Sandbox Code Playgroud)

Val*_*Val 5

在至少一份文档中,该字段lang_en为 null、空或根本不存在。

您需要修改您的field_value_factor函数,以便通过使用missing具有任何有意义的默认值(0、1 等)的设置来告诉它在这种情况下要做什么:

{
    "field_value_factor": {
         "field": "lang_en",
         "missing": 1                <---- add this line
    }
}
Run Code Online (Sandbox Code Playgroud)