elasticsearch 基于上次索引时间在查询时提升弹性搜索结果,elasticsearch,kibana,elasticsearch,Kibana" /> elasticsearch 基于上次索引时间在查询时提升弹性搜索结果,elasticsearch,kibana,elasticsearch,Kibana" />

elasticsearch 基于上次索引时间在查询时提升弹性搜索结果

elasticsearch 基于上次索引时间在查询时提升弹性搜索结果,elasticsearch,kibana,elasticsearch,Kibana,我正试图找出如何根据上一次索引的时间来提高搜索结果的相关性。因此,如果一个搜索查询有多个匹配项,我需要根据文档的最后一个索引时间戳提升结果 我尝试按照文档进行操作,并尝试执行一些查询,但不确定如何传递字段名及其值 GET code_sourcenodedupefilecontractv4_1421_shared_5dd3788f-2d0a-4a49-b679-98bbf519013e/_search { "query": { "function_scor

我正试图找出如何根据上一次索引的时间来提高搜索结果的相关性。因此,如果一个搜索查询有多个匹配项,我需要根据文档的最后一个索引时间戳提升结果

我尝试按照文档进行操作,并尝试执行一些查询,但不确定如何传递字段名及其值

GET code_sourcenodedupefilecontractv4_1421_shared_5dd3788f-2d0a-4a49-b679-98bbf519013e/_search
{
  "query": {
    "function_score": {
      "query": {
        "match": {
          "originalContent": "sample"
        }
      },
      "functions": [
        {
          "linear": {
            "indexedTimeStamp": {
              "scale": "30d",
              "decay": 0.5
            }
          }
        }
      ]
    }
  }
}
在kibana中执行上述查询时,我收到以下消息:

"failed_shards": [
  {
    "shard": 0,
    "index": "code_sourcenodedupefilecontractv4_1421_shared_5dd3788f-2d0a-4a49-b679-98bbf519013e",
    "node": "UX5mwT1sT_a2QuqeFG-JUw",
    "reason": {
      "type": "query_shard_exception",
      "reason": "failed to create query: {\n  \"function_score\" : {\n    \"query\" : {\n      \"match\" : {\n        \"originalContent\" : {\n          \"query\" : \"sample\",\n          \"operator\" : \"OR\",\n          \"prefix_length\" : 0,\n          \"max_expansions\" : 50,\n          \"fuzzy_transpositions\" : true,\n          \"lenient\" : false,\n          \"zero_terms_query\" : \"NONE\",\n          \"auto_generate_synonyms_phrase_query\" : true,\n          \"boost\" : 1.0\n        }\n      }\n    },\n    \"functions\" : [\n      {\n        \"filter\" : {\n          \"match_all\" : {\n            \"boost\" : 1.0\n          }\n        },\n        \"linear\" : {\n          \"indexedTimeStamp\" : {\n            \"scale\" : \"30d\",\n            \"decay\" : 0.5\n          },\n          \"multi_value_mode\" : \"MIN\"\n        }\n      }\n    ],\n    \"score_mode\" : \"multiply\",\n    \"max_boost\" : 3.4028235E38,\n    \"boost\" : 1.0\n  }\n}",
      "index_uuid": "U6os7SW0QuqOuuS3sASCrg",
      "index": "code_sourcenodedupefilecontractv4_1421_shared_5dd3788f-2d0a-4a49-b679-98bbf519013e",
      "caused_by": {
        "type": "illegal_argument_exception",
        "reason": "Can't load fielddata on [indexedTimeStamp] because fielddata is unsupported on fields of type [date]. Use doc values instead."
      }
    }
  }
]"
      
弹性搜索中存储的字段(indexedTimeStamp)的值为:

"indexedTimeStamp": {
        "type": "date",
        "store": true,
        "doc_values": false,
        "format": "epoch_second"
      },
我是不是遗漏了什么


[编辑]:如果
doc\u值
false
,则我们无法对该字段进行排序或聚合。这是弹性搜索方面的限制。我试着用
doc\u值
作为
true
创建新索引,结果正如预期的那样工作。

这里不能使用
字段值\u因子,因为它只能以一个数字作为参数。您必须使用其他函数,例如
gauss
,对较新的记录进行优先级排序

它可能看起来有点像这样:

{
“查询”:{
“功能评分”:{
“查询”:{
“匹配”:{
“内容”:“样本”
}
},
“职能”:[
{
“高斯”:{
“indexedTimeStamp”:{
“起源”:“现在”,
“刻度”:“30d”
}
}
}
]
}
}
}

此处不能使用
字段\u值\u因子
,因为它只能将数字作为参数。您必须使用其他函数,例如
gauss
,对较新的记录进行优先级排序

它可能看起来有点像这样:

{
“查询”:{
“功能评分”:{
“查询”:{
“匹配”:{
“内容”:“样本”
}
},
“职能”:[
{
“高斯”:{
“indexedTimeStamp”:{
“起源”:“现在”,
“刻度”:“30d”
}
}
}
]
}
}
}

如果
doc\u值
false
,则我们无法对该字段进行排序或聚合。我们都不能更新字段。这是弹性搜索方面的限制。我试着用
doc\u值
作为
true
创建新索引,结果正如预期的那样


更多信息

如果
doc\u值
false
,则我们无法对该字段进行排序或聚合。我们都不能更新字段。这是弹性搜索方面的限制。我试着用
doc\u值
作为
true
创建新索引,结果正如预期的那样

更多信息