是否有一种方法来匹配精确的记录在一个多条件elasticsearch BoolQuery?



我有一个应用程序,我使用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">";FBA或">,它仍然返回文档但我希望它只在引用。type时返回文档是">NVE";和references.value8005267293

对于我的搜索查询,这是我使用的

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

任何帮助都会很感激,谢谢

您必须使用默认映射或定义的references字段作为对象数据类型,这会丢失官方文档中提到的属性之间的关系。

您需要为references字段使用嵌套的数据类型,并使用nested查询来获得预期的结果。

最新更新