gpt4 book ai didi

elasticsearch - 带有必须和必须不具有相同字段的Elasticsearch嵌套查询

转载 作者:行者123 更新时间:2023-12-02 23:43:54 24 4
gpt4 key购买 nike

样本数据

poll_A:
{
popular: [
{ domains: [ "google.com", "etsy.com", "amazon.com" ], rank: 1 },
{ domains: [ "google.com", "amazon.com" ], rank: 2 },
]
}

poll_B:
{
popular: [
{ domains: [ "google.com", "etsy.com", "amazon.com" ], rank: 1 },
{ domains: [ "google.com", "etsy.com", "amazon.com" ], rank: 2 },
]
}
我正在尝试创建一个查询,该查询将检查是否仅在等级1中存在域。下面的查询是我开始使用的内容,因为它似乎正确。但是,无论我要检查哪个排名,匹配查询似乎都会检查嵌套字段的每个实例。
{
"query": {
"nested": {
"path": "popular",
"query": {
"bool": {
"must": [
{
"match": {
"popular.domains": "etsy.com"
}
},
{
"match": {
"popular.rank": 1
}
}
],
"must_not": [
{
"match": {
"popular.domains": "etsy.com"
}
},
{
"range": {
"popular.rank": {
"gte": 2
}
}
}
]
}
}
}
}
}
本质上,我想检查域是否与等级1匹配,但与其他任何等级都不匹配。

最佳答案

我最终想出了正确的语法来获取所需的内容。如果对其他人有帮助,以下是对我有用的方法:

{
"query": {
"bool": {
"must": [
{
"nested": {
"path": "popular",
"query": {
"bool": {
"must": [
{
"match": {
"popular.Domains": "etsy.com"
}
},
{
"match": {
"popular.Rank": 1
}
}
]
}
}
}
}
],
"must_not": [
{
"nested": {
"path": "popular",
"query": {
"bool": {
"must": [
{
"match": {
"popular.Domains": "etsy.com"
}
},
{
"range": {
"popular.Rank": {
"gte": 2
}
}
}
]
}
}
}
}
]
}
}
}

关于elasticsearch - 带有必须和必须不具有相同字段的Elasticsearch嵌套查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62839730/

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