弹性搜索查询之间的区别
Difference between elasticsearch queries
我很难弄清楚为什么这两个查询没有 return 相同数量的结果(我使用的是 elasticsearch 2.4.1):
{
"nested": {
"path": "details",
"filter": [
{ "match": { "details.id": "color" } },
{ "match": { "details.value_str": "red" } }
]
}
}
{
"nested": {
"path": "details",
"filter": {
"bool": {
"must": [
{ "match": { "details.id": "color" } },
{ "match": { "details.value_str": "red" } }
]
}
}
}
}
第一个查询有更多结果。
我的猜测是第一个查询中的 filter
子句像 or
/should
一样工作,但是如果我在第二个查询中替换 must
使用 should
,查询产生的结果数量多于这两个。
这些查询的含义有何不同?
恐怕我不了解索引文档的结构;我只知道每个查询有多少行 returns.
第一个查询错误,嵌套的filter
不能是数组,所以我怀疑ES没有正确解析它,只取一个匹配而不是两个匹配,这可能是它[=15的原因=]比第二个数据多
第二个查询在嵌套过滤器方面是正确的,并且产生的结果正是您所期望的。
我很难弄清楚为什么这两个查询没有 return 相同数量的结果(我使用的是 elasticsearch 2.4.1):
{
"nested": {
"path": "details",
"filter": [
{ "match": { "details.id": "color" } },
{ "match": { "details.value_str": "red" } }
]
}
}
{
"nested": {
"path": "details",
"filter": {
"bool": {
"must": [
{ "match": { "details.id": "color" } },
{ "match": { "details.value_str": "red" } }
]
}
}
}
}
第一个查询有更多结果。
我的猜测是第一个查询中的 filter
子句像 or
/should
一样工作,但是如果我在第二个查询中替换 must
使用 should
,查询产生的结果数量多于这两个。
这些查询的含义有何不同?
恐怕我不了解索引文档的结构;我只知道每个查询有多少行 returns.
第一个查询错误,嵌套的filter
不能是数组,所以我怀疑ES没有正确解析它,只取一个匹配而不是两个匹配,这可能是它[=15的原因=]比第二个数据多
第二个查询在嵌套过滤器方面是正确的,并且产生的结果正是您所期望的。