有没有一种方法可以在多条件ElasticSearch的BoolQuery中精确匹配记录?

mrphzbgm  于 2022-12-17  发布在  ElasticSearch
关注(0)|答案(1)|浏览(139)

我有一个应用程序,我使用elasticsearch作为我的搜索引擎,我有一个问题,我需要帮助。
在我的搜索查询中,我希望获取包含值为“NVE”的***引用类型***和值为“8005267293”的***引用值***的文档
下面是我想要获取的文档的一个片段,如下所示

.......
  "addresses": [],
  "references": [
                    {
                        "type": "FBA",
                        "value": "0000765855"
                    },
                    {
                        "type": "GEN",
                        "value": "0082467914"
                    },
                    {
                        "type": "GEN",
                        "value": "0000765855"
                    },
                    {
                        "type": "GEN",
                        "value": "0006418559"
                    },
                    {
                        "type": "NVE",
                        "value": "8005267293"
                    },
                    {
                        "type": "NVE",
                        "value": "000000008005267291"
                    }
                ],
........

我的问题是,我的查询实际上按预期返回文档,但如果我将references.type的值更改为“GEN”或“FBA",它仍将返回文档,但我希望它仅在***references.type***为“NVE”且*references.value为“8005267293”时返回文档
对于我的搜索查询,我使用了以下内容

{
    "query": {
        "bool": {
            "must": [
              {
                "bool": {
                    "must": [{
                        "match": {
                            "references.type": "NVE"
                        }
                    }]
                }
            }, 
            {
                "bool": {
                    "must": [
                      {
                        "wildcard": {
                            "references.value": "*8005267293*"
                        }
                    }]
                }
            }]
        }
    }
}

任何帮助都将不胜感激,谢谢

zf2sa74q

zf2sa74q1#

您必须使用默认Map或定义的references字段作为对象数据类型,这将失去官方文档中提到的属性之间的关系。
您需要对references字段使用嵌套数据类型,并使用nested查询来获取预期结果。

相关问题