如何在弹性搜索中查询对象数据类型



我们有一个弹性记录。对于单个记录,我们可能有TA、AI、ML、BL的状态,以及下面的一些状态。

Record1 : { status.VI : "A",
status.BL : "A",
id:"110716",
pe:"1344"},
Record2 : {
status.TA : "A",
status.QL : "A",
id:"310716",
pe:"3344"
}
Record3 : {
status.TA : "I",
status.QL : "I",
id:"410716",
pe:"4344"
}
Record4 : {
status.BL : "A",
status.QL : "I",
id:"510716",
pe:"5344"
}

我有很多记录,但可能没有全部记录。对于某些记录,只有QL和TA的状态才会出现。对于某些记录,BL可能只有状态。我必须查询并获取状态为"仅"的结果;我"对于任何值(TA,BL,QL.(

例如,在上面的记录中,我只需要得到记录3,因为它具有staus";我"无论有什么价值。

"query": {
"bool": {
"must": [
{
"match": {
"status.TA": "I",
"status.QL": "I",
"status.ML": "I",
"status.BL": "I"
}
}
]
}
}

如果我尝试像上面那样给出,它是不起作用的,并且在所有记录QL、ML、BL、TA中都不需要存在。请帮忙。

匹配查询不支持多个字段。有很多方法可以解决这个问题。多匹配查询,例如:

GET test_index/_search
{
"query": {
"multi_match": {
"query": "I",
"fields": ["status.TA","status.QL","status.ML","status.BL"]
}
}
}

最新更新