gpt4 book ai didi

elasticsearch - 如何在elasticsearch中将must和must_not结合在一起

转载 作者:行者123 更新时间:2023-12-03 01:17:23 30 4
gpt4 key购买 nike

我有Elasticsearch 6.8.8,仅是我的问题的一个示例。我想创建一个查询,使我的文档具有“测试”字段,值为“1”,而我不想获取“测试”字段,值为“3”,我知道我可以只写第一个表达式没有3,它将给我一个值为“1”的文档。但是我想知道,有什么办法可以在同一字段中同时使用must和must_not并获得“1”的值吗?

我写了这个基本示例以了解我的意思:

{
"from": 0,
"query": {
"nested": {
"path": "attributes",
"query": {
"bool": {
"should": [
{
"bool": {
"must": [
{
"match": {
"attributes.key": {
"query": "Test"
}
}
},
{
"match": {
"attributes.value": {
"query": "1"
}
}
}
],
"must_not": [
{
"match": {
"attributes.key": {
"query": "Test"
}
}
},
{
"match": {
"attributes.value": {
"query": "3"
}
}
}
]
}
}
]
}
}
}
}

}

我将属性用作嵌套字段,将键值字段用作映射的字符串类型。

最佳答案

您需要在attributes.key:Test中省略must_not,因为它会过滤掉所有Test:

GET combine_flat/_search
{
"from": 0,
"query": {
"nested": {
"inner_hits": {},
"path": "attributes",
"query": {
"bool": {
"should": [
{
"bool": {
"must": [
{
"match": {
"attributes.key": {
"query": "Test"
}
}
},
{
"match": {
"attributes.value": {
"query": "1"
}
}
}
],
"must_not": [
{
"match": {
"attributes.value": {
"query": "3"
}
}
}
]
}
}
]
}
}
}
}
}

提示:使用 inner_hits仅返回匹配的嵌套键值对,而不是整个字段。

关于elasticsearch - 如何在elasticsearch中将must和must_not结合在一起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61878666/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com