对长属性进行匹配或术语查询以获得完全匹配?
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
}
}
}
}
}
我的文档具有以下映射属性:
"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
}
}
}
}
}