我有一个应用程序,我使用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*"
}
}]
}
}]
}
}
}
任何帮助都将不胜感激,谢谢
1条答案
按热度按时间zf2sa74q1#
您必须使用默认Map或定义的
references
字段作为对象数据类型,这将失去官方文档中提到的属性之间的关系。您需要对
references
字段使用嵌套数据类型,并使用nested
查询来获取预期结果。