Elasticsearch:如何禁用字段上的评分?

时间:2014-07-12 13:04:30

标签: elasticsearch

我是Elasticsearch的新手,如果答案很明显,请原谅我。

以下是我对相关字段的映射所具有的内容:

"condition" : { "type" : "string", "store" : "no", "index": "not_analyzed", "omit_norms" : "true" }

我需要在这个字段上搜索,但我需要在子字符串上进行100%字符串匹配(没有词干等)(空白分隔)。文档中此字段的示例如下:

{
    "condition": "abc xyz"
}

示例查询是:

/_search?q=condition:xyz

上述映射是否正确?我也使用了omit_norms(true)。在我的案例中,这是正确的做法吗?

如何禁用此字段的评分?我可以在制图中做到吗?这样做的最佳方式是什么? (实际上我需要禁用多个得分。我确实有需要得分的字段)

谢谢和问候!

2 个答案:

答案 0 :(得分:3)

使用omit_norms:true不会考虑得分的字段长度,Elasticsearch不会为规范信息编制索引。因此,如果您不想使用评分这是一件好事,因为它可以节省一些磁盘空间。

如果您对查询中的评分不感兴趣,请使用过滤后的查询:

{
  "query": {
    "filtered": {
      "query": {
        "match_all": {}
      },
      "filter": {
        "bool": {
          "must": {
            "term": {
              "condition": "abc xyz"
            }
          }
        }
      }
    }
  }
}

答案 1 :(得分:0)

过滤查询的新语法现在为:

{
"query": {
  "bool": {
    "must": {
      "match_all": {}
    },
    "filter": {
      "term": {
        "condition": "abc"
      }
    }
   }
  }
}