gpt4 book ai didi

elasticsearch - 满足数组中所有条件的查询

转载 作者:行者123 更新时间:2023-12-02 23:07:19 26 4
gpt4 key购买 nike

这些文档以下面的形式存储在Elastic Research索引中。
映射

{
"mappings": {
"properties": {
"data": {
"type": "nested"
}
}
}
}
第一份文件
{
"data": [
{
"value": "a"
},
{
"value": "a"
},
{
"value": "b"
}
]
}
第二个文档
{
"data": [
{
"value": "a"
},
{
"value": "a"
},
{
"value": "a"
}
]
}
我只想在阵列中的所有值均为'a'时返回文档(第二个文档)
在这种情况下,应如何设置查询条件?

最佳答案

The nested query searches nested field objects as if they were indexedas separate documents. If an object matches the search, the nestedquery returns the root parent document.


当 bool(boolean) 查询与mustmust_not结合使用时,它将搜索每个单独的嵌套对象,并消除不匹配的对象,但是如果剩下一些嵌套对象,它们与查询匹配,则将得到结果。
在下面的搜索查询中进行尝试,在该查询中将丢弃所有具有 b值的嵌套对象的文档。
搜索查询:
{
"query": {
"bool": {
"must_not": {
"nested": {
"path": "data",
"query": {
"term": {
"data.value": "b"
}
}
}
}
}
}
}
搜索结果:
"hits": [
{
"_index": "stof_64329782",
"_type": "_doc",
"_id": "2",
"_score": 0.0,
"_source": {
"data": [
{
"value": "a"
},
{
"value": "a"
},
{
"value": "a"
}
]
}
}
]
结合了多个 bool(boolean) 查询和嵌套查询的搜索查询:
以下搜索查询还将为您提供所需的结果。
{
"query": {
"bool": {
"must": [
{
"nested": {
"path": "data",
"query": {
"bool": {
"must": [
{
"match": {
"data.value": "a"
}
}
]
}
}
}
}
],
"must_not": [
{
"nested": {
"path": "data",
"query": {
"bool": {
"must": [
{
"match": {
"data.value": "b"
}
}
]
}
}
}
}
]
}
}
}

关于elasticsearch - 满足数组中所有条件的查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64329782/

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