当前位置: 首页 > 知识库问答 >
问题:

返回多术语不同值

齐涛
2023-03-14

在弹性搜索索引中,我试图通过来自字段companyName和字段productName的两个不同的顶级字段值进行查询,按generatedDate字段排序,并包括domainModelId字段。

下面的SQL查询显示了所有现有值的结果,我通过generatedDate突出显示了两个唯一的文档行(在本例中);

{
    "query": "SELECT companyName, productName, generatedDate FROM nextware_domain_metaservices_domainmodel ORDER BY generatedDate DESC"
} 

响应如下:

我尝试了以下方法

{
  "size":0,
  "aggs": 
  {
    "companies": 
    {
        "terms": 
        {
            "field": "companyName.keyword"
        },
        "aggs": 
        {
            "products": 
            {
                "terms": 
                {
                    "field": "productName.keyword"
                }
            }
        }
     }
   }
}

这将返回正确的存储桶,如下所示;

 "aggregations": {
    "companies": {
        "doc_count_error_upper_bound": 0,
        "sum_other_doc_count": 0,
        "buckets": [
            {
                "key": "NextWare",
                "doc_count": 18,
                "products": {
                    "doc_count_error_upper_bound": 0,
                    "sum_other_doc_count": 0,
                    "buckets": [
                        {
                            "key": "ProductPortal",
                            "doc_count": 16
                        },
                        {
                            "key": "Domain",
                            "doc_count": 2
                        }
                    ]
                }
            }
        ]
    }
}

如何包含domainModelId的值?没有第二个查询的Id字段?

共有1个答案

寿高阳
2023-03-14

包含< code>domainModelId的值。Id,您需要使用top_hits聚合

添加包含索引数据、搜索查询和搜索结果的工作示例

索引数据:

{
    "companyName":"NextWare",
    "productName":"Domain",
    "domainModelId.Id":"i"
}
{
    "companyName":"NextWare",
    "productName":"Domain",
    "domainModelId.Id":"c"
}
{
    "companyName":"NextWare",
    "productName":"ProductPortal",
    "domainModelId.Id":"a"
}
{
    "companyName":"NextWare",
    "productName":"ProductPortal",
    "domainModelId.Id":"b"
}
{
    "companyName":"NextWare",
    "productName":"ProductPortal",
    "domainModelId.Id":"d"
}
{
    "companyName":"NextWare",
    "productName":"ProductPortal",
    "domainModelId.Id":"e"
}
{
    "companyName":"NextWare",
    "productName":"ProductPortal",
    "domainModelId.Id":"f"
}
{
    "companyName":"NextWare",
    "productName":"ProductPortal",
    "domainModelId.Id":"g"
}
{
    "companyName":"NextWare",
    "productName":"ProductPortal",
    "domainModelId.Id":"h"
}

搜索查询:

{
  "size": 0,
  "aggs": {
    "companies": {
      "terms": {
        "field": "companyName.keyword"
      },
      "aggs": {
        "products": {
          "terms": {
            "field": "productName.keyword"
          },
          "aggs": {
            "top_ids": {
              "top_hits": {
                "_source": {
                  "includes": [
                    "domainModelId.Id"
                  ]
                },
                "size": 10
              }
            }
          }
        }
      }
    }
  }
}

搜索结果:

"aggregations": {
    "companies": {
      "doc_count_error_upper_bound": 0,
      "sum_other_doc_count": 0,
      "buckets": [
        {
          "key": "NextWare",
          "doc_count": 9,
          "products": {
            "doc_count_error_upper_bound": 0,
            "sum_other_doc_count": 0,
            "buckets": [
              {
                "key": "ProductPortal",
                "doc_count": 7,
                "top_ids": {
                  "hits": {
                    "total": {
                      "value": 7,
                      "relation": "eq"
                    },
                    "max_score": 1.0,
                    "hits": [
                      {
                        "_index": "67049816",
                        "_type": "_doc",
                        "_id": "1",
                        "_score": 1.0,
                        "_source": {
                          "domainModelId.Id": "a"
                        }
                      },
                      {
                        "_index": "67049816",
                        "_type": "_doc",
                        "_id": "2",
                        "_score": 1.0,
                        "_source": {
                          "domainModelId.Id": "b"
                        }
                      },
                      {
                        "_index": "67049816",
                        "_type": "_doc",
                        "_id": "4",
                        "_score": 1.0,
                        "_source": {
                          "domainModelId.Id": "d"
                        }
                      },
                      {
                        "_index": "67049816",
                        "_type": "_doc",
                        "_id": "5",
                        "_score": 1.0,
                        "_source": {
                          "domainModelId.Id": "e"
                        }
                      },
                      {
                        "_index": "67049816",
                        "_type": "_doc",
                        "_id": "6",
                        "_score": 1.0,
                        "_source": {
                          "domainModelId.Id": "f"
                        }
                      },
                      {
                        "_index": "67049816",
                        "_type": "_doc",
                        "_id": "7",
                        "_score": 1.0,
                        "_source": {
                          "domainModelId.Id": "g"
                        }
                      },
                      {
                        "_index": "67049816",
                        "_type": "_doc",
                        "_id": "8",
                        "_score": 1.0,
                        "_source": {
                          "domainModelId.Id": "h"
                        }
                      }
                    ]
                  }
                }
              },
              {
                "key": "Domain",
                "doc_count": 2,
                "top_ids": {
                  "hits": {
                    "total": {
                      "value": 2,
                      "relation": "eq"
                    },
                    "max_score": 1.0,
                    "hits": [
                      {
                        "_index": "67049816",
                        "_type": "_doc",
                        "_id": "3",
                        "_score": 1.0,
                        "_source": {
                          "domainModelId.Id": "c"
                        }
                      },
                      {
                        "_index": "67049816",
                        "_type": "_doc",
                        "_id": "9",
                        "_score": 1.0,
                        "_source": {
                          "domainModelId.Id": "i"
                        }
                      }
                    ]
                  }
                }
              }
            ]
          }
        }
      ]
    }
  }
 类似资料:
  • 问题内容: 我正在尝试执行上述程序,但为同一程序提供了不同的值。对于给定的字符串执行多次时,是否有任何方法可以获取相同的字节? 问题答案: 在这里,您不打印a的值。正如owlstead在注释中正确指出的那样,将在字节数组上调用Object.toString()方法。导致这种格式的输出: 如果要打印数组中的每个元素,则必须遍历它。 甚至更简单,请使用以下方法:

  • 我试图解决一个问题,我必须在搜索中得到明确的结果。 当我对最喜欢的汽车“法拉利”执行术语查询时。我得到两个名为ABC的结果。在这种情况下,我只是希望返回的结果应该是一个。所以我的要求是,如果我可以应用一个不同的on name字段来接收一个1结果。 谢啦

  • 5.3. 多返回值 在Go中,一个函数可以返回多个值。我们已经在之前例子中看到,许多标准库中的函数返回2个值,一个是期望得到的返回值,另一个是函数出错时的错误信息。下面的例子会展示如何编写多返回值的函数。 下面的程序是findlinks的改进版本。修改后的findlinks可以自己发起HTTP请求,这样我们就不必再运行fetch。因为HTTP请求和解析操作可能会失败,因此findlinks声明了2

  • 问题内容: 我有一个打开文件的代码,计算中值并将该值写入单独的文件。一些文件可能是空的,因此我编写了以下循环来检查文件是否为空,如果是,请跳过它,增加计数并返回循环。它对找到的第一个空文件执行预期的操作,但对第二个不执行预期的操作。循环在下面 输出如下 第二个问题是,t以某种方式从小数点后一位上升到15位,而最后一位似乎增加了小数位?感谢您提供的所有帮助 编辑 该错误 似乎仅适用于仅使用一行示例的

  • 在我的应用程序中,有一个计算得到两个日期之间的天数。计算如下所示; 此方法在我的本地pc(windows 7,64位)上返回正确的值(即2015-03-10 00:00:00.0、2015-03-02 00:00:00.0,从存储库中检索的值为8,并传递给该方法)。但是,此方法在位于加拿大的pc(Windows 7,64位)上返回不正确的值(即2015-03-10 00:00:00.0、2015-

  • 此处为elasticsearch新用户,但存在术语聚合问题。我为187份文档编制了索引,其中包含“名称”、“主机”、“风险”等字段。字段风险有4个唯一值(“关键”、“高”、“中”、“低”、“信息”),我正在运行这样的术语聚合: 我希望得到一个结果,说明我有x个临界值,x个高值等等。问题是,我没有得到返回的桶。 我的Elasticsearch版本是7.12.0有什么想法吗 > 编辑:这是映射: 以下