function_score 尝试在 elasticsearch 中使用排除索引中的字段

function_score tries to use field from excluded index in elasticsearch

我有三个自己的索引:ABC。此外,我还有 .marvel-kibana 索引。 ABC 索引中的所有文档都有 global_priorty 字段。

我想知道,为什么尽管排除了除 ABC 索引以外的所有索引,但弹性仍会抛出异常:ElasticsearchException[无法找到字段 [global_priorty]] 的字段映射器在 .marvel-kibana 索引中?该索引是否已排除(默认包含在 no_match_filter 中)?

我的代码:

GET /_search
{
  "query": {
    "filtered": {
      "query": {
        "function_score": {
          "query": { ... },
          "functions": [ 
            {
              "field_value_factor": {
                "field": "global_priorty",
                "factor": 1,
                "modifier": "sqrt"
              }
            }
          ]
        }
      },
      "filter": {
        "indices": {
          "indices": [ "A", "B", "C" ],
          "filter": { ... },
          "no_match_filter": "none"
        }
      }
    }
  },
  "indices_boost": { ... },
  "highlight": { ... }
  }
}

卡罗尔,

我不确定您是否达到了预期目的。在索引过滤器中列出索引并不意味着它会自动从搜索中排除。

过滤器的工作原理如下: 对于 indices 列表中的索引,使用 filter。对于其他人使用 no_match_filter.

你的过滤器怎么样?

仅搜索选定索引的首选方法是在搜索端点中使用它们。类似于:

get /A,B,C/_search 
{
....
}

警告:我记得在设置多个索引和类型时 Java API 遇到了一些问题。但那是很久以前的事了。

你应该试一试!

此致, 卡罗尔

P.S。 Powodzenia!顺便说一句:Parafrazując:Wszystkie Karole 到 porządne chłopaki!