我在elasticsearch中有一些文檔有一個鍵值對列表。這裏有些例子。minimum_number_should_match與嵌套必須bool
document 1:
{
data: [
{
key: key1,
value: value1
},
{
key: key1,
value: value2
},
]
}
document 2:
{
data: [
{
key: key2,
value: blah
},
{
key: key1,
value: value2
},
]
}
document 3:
{
data: [
{
key: key1,
value: value3
},
{
key: key1,
value: value2
},
{
key: key1,
value: somevalue
}
]
}
document 4:
{
data: [
{
key: key3,
value: blah
}
]
}
現在我想有值[value1, value2, value3]
的至少2與關鍵key1
所有文件。 所以從這個例子中,我需要文件1和3但是不是2或4。
到目前爲止,我的查詢看起來是這樣的:
"query": {
"nested": {
"path": "data",
"query": {
"bool": {
"should": [
{
"bool": {
"must": [
{
"term": {
"key": key1
}
},
{
"term": {
"value": {
"value": "value1",
}
}
}
]
}
},
{
"bool": {
"must": [
{
"term": {
"key": key1
}
},
{
"term": {
"value": {
"value": "value2",
}
}
}
]
}
},
{
"bool": {
"must": [
{
"term": {
"key": key1
}
},
{
"term": {
"value": {
"value": "value3",
}
}
}
]
}
}
],
"minimum_number_should_match": 2
}
}
}
}
但它完全不返回任何比賽。 據我所知,minimum_number_should_match
只是確保文件只有在至少匹配bool query
中給定的最小should
出現時纔會被返回。
但好像我不完全瞭解它是如何工作的。 我究竟如何得到minimum_number_should_match
以使用嵌套的bool查詢,還是有另一種方法來執行此操作?
我實際上並沒有字段「value」這個詞。這只是一個顯示我的文檔結構的例子。我認爲這可能與'minimum_number_should_match'對嵌套布爾的工作方式有所不同? –