gpt4 book ai didi

elasticsearch - 仅具有与术语列表相交但不与其他术语相交的术语的Elasticsearch文档

转载 作者:行者123 更新时间:2023-12-02 22:20:16 25 4
gpt4 key购买 nike

我有带有标签列表的文档:

{
“字段”:{
“标签”: [
“foo”,
“酒吧”,
“巴兹”
],
“名称”: [
“文件一”
],
“description”:“很好的第一份文件”,
“id”:1
}
},
{
“字段”:{
“标签”: [
“foo”,
“狗”
],
“名称”: [
“文件二”
],
“description”:“优良的第二份文件”,
“id”:2
}
}

我有一个术语列表:

[“foo”,“bar”,“qux”,“zip”,“baz”]

我想要一个查询,该查询将返回在术语列表中具有标签的文档-但没有其他术语。

因此,鉴于上面的列表,查询将返回Document One,但而不是 Document Two(因为它的术语dog不在术语列表中。

我尝试使用not terms过滤器进行查询,如下所示:

POST / documents / _search?size = 1000
{
“字段”:[
“ID”,
“名称”,
“标签”
],
“过滤器”:{
“不”:{
“过滤器”:{
“ bool(boolean) ”:{
“一定不”: {
“条款”:{
“标签”: [
“foo”,
“酒吧”,
“qux”,
“压缩”,
“巴兹”
]
}
}
}
}
}
}
}

但这没有用。

在给定的术语列表的情况下,如何创建一个查询,该查询将匹配仅包含列表中的术语而没有其他术语的文档?换句话说,所有文档都应包含标签列表,这些标签是所提供术语列表的子集。

最佳答案

您可以使用脚本过滤器来检查数组项是否在文档中具有标签数组的所有值。我建议您制作一个单独的常规文件或普通javascript文件,将其放在config / scripts / folderToYourScript中,并在filter: { script : {script_file: file } }中的查询中使用它

在脚本文件中时,您可以使用循环来检查需求

关于elasticsearch - 仅具有与术语列表相交但不与其他术语相交的术语的Elasticsearch文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31258959/

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