我想在elastic中创建一个查询,从中获取与某个值匹配但没有特定字段的所有文档:我尝试执行以下操作:
{
"query": {
"bool": {
"must": [
{
"match": {
"some-field.b": true
}
},
{
"bool": {
"must_not": {
"exists": {
"field": "some-other-field.a"
}
}
}
}
]
}
}
}
即使我在elastic中更改了一个文档,并给了某个其他字段一个值,查询也会不断返回相同的总命中数。知道为什么会这样吗?
我发现改变这一点的唯一方法是在查询中添加最低分数,但我不确定我是否真正理解分数的概念。只有在两个条件都满足的情况下,我才想要这些文件。
我注意到另一件事。如果我在有最低分数的情况下重复查询,则返回的命中数会有所不同。
2条答案
按热度按时间vs91vp4v1#
因为您没有提到任何有关Map和索引数据的内容。
添加索引Map、索引数据和搜索查询的工作示例(将数据视为嵌套类型)
some-other-field.a
看起来像一个嵌套字段)索引Map:
索引数据:
搜索查询:
搜索结果:
6xfqseft2#
我需要的最后一个问题是:
看起来我的错误是查询的必不可部分,因为some other字段是嵌套字段