我在ElasticSearch数据库中有一些文档,看起来像这样:
文件一:
{
“Id”: 6000,
“customerName”: GT,
“pages”: [
{
“fieldType”: typeA,
“fieldId”: 1001
}
{
“fieldType”: typeB,
“fieldId”: 1002
}
]
}
文件二:
{
“Id”: 6001,
“customerName”: MX,
“pages”: [
{
“fieldType”: typeA,
“fieldId”: 1001
}
]
}
文件三:
{
“Id”: 6002,
“customerName”: MX,
“pages”: [
{
“fieldType”: typeB,
“fieldId”: 1002
}
{
“fieldType”: typeC,
“fieldId”: 1003
}
]
}
文件四:
{
“Id”: 6003,
“customerName”: GT,
“pages”: [
{
“fieldType”: typeA,
“fieldId”: 1005
}
{
“fieldType”: typeC,
“fieldId”: 1003
}
]
}
文件五:
{
“Id”: 6004,
“customerName”: MX,
“pages”: [
{
“fieldType”: typeA,
“fieldId”: 1005
}
]
}
我需要计算嵌套在“pages”字段中的typeA条目的数量,但只计算同时出现在两个文档中的条目-customerName为GT和MX的条目。基本上,我想知道在customerName=GT和customerName=MX的文档之间共享typeA的次数。
因此,这意味着我将计算2个typeA条目-一个fieldId为1001的条目位于文档1和文档2中,另一个fieldId为1005的条目位于文档4和文档5中。如何使用DSL查询来实现这一点?
到目前为止,我尝试了这个返回的结果,计数无论是燃气轮机或MX,而不是两者:
{
"query": {
"bool": {
"must": [
{
"bool": {
"should": [
{
"match": {
"customerName": "CN"
}
},
{
"match": {
"customerName": "MX"
}
}
]
{
"nested": {
"path": "pages",
"query": {
"term": {
"fieldType": "typeA"
}
}
}
}
}
}
]
}
}
}
1条答案
按热度按时间t5fffqht1#
调整answer以解决此问题。您拥有customerName GT或MX的每个文档的组类型。
回应