我的数据如下:
{
"name": "name1",
"name_gr": ["gr1","gr2"]
},
{
"name": "name2",
"name_gr": ["gr1","gr2"]
},
{
"name": "name3",
"name_gr": ["gr2","gr3"]
},
{
"name": "name4",
"name_gr": ["gr1","gr2","gr3","gr4"]
},
{
"name": "name4",
"name_gr": ["gr4","gr5"]
}
现在,我尝试使用elasticsearch_dsl
python模块编写弹性搜索查询,方法是从该模块导入Q
。在
我的输入查询将是regex
上的某个"name_gr"
。例如:"name_gr": "gr[12]"
。
所以,在这个例子中,我想要所有在“name\u gr”列表中同时有“gr1”和“gr2”的名称。在
因此->
例1:"name_gr": "gr[12]"
将是:
因为gr1和gr2都存在于name1、name2和name4中。在
例2:"name_gr": "gr.*"
将是:
因为,所有gr(gr1、gr2、gr3、gr4)都只存在于name4中。在
我试着写下我的疑问:
must = [{'match':{'regexp': {'name_gr': 'gr[12]'}}}]
result = Q('bool', must = must)
但它在结果中也给出了name3,这是无效的,因为gr1和gr2都不存在于其中。请帮忙。从现在开始我就被困在这里了。在
谢谢。在
在您的示例中,您使用的是
match
查询,您希望使用regexp
。为此,只需使用:希望这有帮助!在
相关问题 更多 >
编程相关推荐