弹性搜索查询从regexp input param查找列表中值的完全匹配

2024-05-28 20:07:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我的数据如下:

  {
    "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_dslpython模块编写弹性搜索查询,方法是从该模块导入Q。在

我的输入查询将是regex上的某个"name_gr"。例如:"name_gr": "gr[12]"。 所以,在这个例子中,我想要所有在“name\u gr”列表中同时有“gr1”和“gr2”的名称。在

因此->

例1:"name_gr": "gr[12]"将是:

^{pr2}$

因为gr1和gr2都存在于name1、name2和name4中。在

例2:"name_gr": "gr.*"将是:

^{3}$

因为,所有gr(gr1、gr2、gr3、gr4)都只存在于name4中。在

我试着写下我的疑问:

must = [{'match':{'regexp': {'name_gr': 'gr[12]'}}}]
result = Q('bool', must = must)

但它在结果中也给出了name3,这是无效的,因为gr1和gr2都不存在于其中。请帮忙。从现在开始我就被困在这里了。在

谢谢。在


Tags: 模块数据nameelasticsearchgrmustname1name2

热门问题