对长属性进行匹配或术语查询以获得完全匹配?

match or term query on a long property for exact match?

我的文档具有以下映射属性:

"sid" : {"type" : "long", "store": "yes", "index": "not_analyzed"},

该属性的每条记录只有一个长整型值。我想查询此属性。我尝试了以下两个查询:

{
    "query" : {
        "term" : {
             "sid" : 10
        }
    }
}

{
    "query" : {
        "match" : {
             "sid" : 10
        }
    }
}

两个查询都有效,return 目标文档。我的问题:哪个更有效率?为什么?

两者的工作方式与您提到的相同。与匹配查询不同,术语查询匹配具有包含术语的字段的文档(未分析!)。所以我的意见是术语查询在你的情况下更有效,因为不需要进行分析。
参见:
http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/query-dsl-term-query.html

您想使用术语查询,如果您想要更高效,请使用过滤查询以便缓存您的结果。

GET index1/test/_search
{
  "query": {
    "filtered": {
      "filter": {
        "term": {
          "sid": 10
        }
      }
    }
  }
}