我可以获得每个域列表的计数吗?
Can I get a count for each of a list of domains?
我正在尝试执行术语过滤器查询,以获取域列表中每个域的文档数量:
GET /myindex/_count
{
"query": {
"filtered": {
"filter": {
"terms": {
"domain": ["w3.org"]
}
}
}
}
}
Returns 25. 我有一个包含几千个域的列表,我想在 1 个查询中完成所有这些。那可能吗?我试过:
GET /myindex/_count
{
"query": {
"bool": {
"must": {
"terms": {
"domain": [
"w3.org",
"google.com",
...,
]
}
}
}
}
}
但这给了我 1 个数字(而我需要它们按每个域细分),例如:
w3.org: 25,
google.com: 143,
...
query
不会 return 计算找到的每个匹配项,它会显示找到了多少匹配文档,基本上是 elasticsearch 术语中的命中。要获得您发现的每个术语的数字,您必须使用 aggregations
,更多可用数据 here。
对于您的特定情况,您必须使用 Terms Aggregation
,更多可用数据 here。
您的查询将如下所示
GET /myindex/_search
{
"query": {
"bool": {
"must": {
"terms": {
"domain": [
"w3.org",
"google.com"
]
}
}
}
},
"aggregations":{
"domain_count":{
"terms":{
"field": "domain"
}
}
}
}
响应看起来像这样,其中 buckets
中的 doc_count
和 key
是您需要的结果。
{
...
"aggregations" : {
"domain_count" : {
"doc_count_error_upper_bound" : 46,
"buckets" : [
{
"key" : "w3.org",
"doc_count" : 100
},
{
"key" : "google.com",
"doc_count" : 52
},
...
]
}
}
}
确保您使用的是 _search
终点而不是 _count
。
如果您不想限制对特定域的查询,例如 w3.org
或 google.com
,您可以提供 match_all
查询。它将为您提供所有可能的 domain
值及其 doc_count
.
GET /myindex/_search
{
"query": {
"bool": {
"must": {
"match_all": {
}
}
}
},
"aggregations":{
"domain_count":{
"terms":{
"field": "domain"
}
}
}
}
我正在尝试执行术语过滤器查询,以获取域列表中每个域的文档数量:
GET /myindex/_count
{
"query": {
"filtered": {
"filter": {
"terms": {
"domain": ["w3.org"]
}
}
}
}
}
Returns 25. 我有一个包含几千个域的列表,我想在 1 个查询中完成所有这些。那可能吗?我试过:
GET /myindex/_count
{
"query": {
"bool": {
"must": {
"terms": {
"domain": [
"w3.org",
"google.com",
...,
]
}
}
}
}
}
但这给了我 1 个数字(而我需要它们按每个域细分),例如:
w3.org: 25,
google.com: 143,
...
query
不会 return 计算找到的每个匹配项,它会显示找到了多少匹配文档,基本上是 elasticsearch 术语中的命中。要获得您发现的每个术语的数字,您必须使用 aggregations
,更多可用数据 here。
对于您的特定情况,您必须使用 Terms Aggregation
,更多可用数据 here。
您的查询将如下所示
GET /myindex/_search
{
"query": {
"bool": {
"must": {
"terms": {
"domain": [
"w3.org",
"google.com"
]
}
}
}
},
"aggregations":{
"domain_count":{
"terms":{
"field": "domain"
}
}
}
}
响应看起来像这样,其中 buckets
中的 doc_count
和 key
是您需要的结果。
{
...
"aggregations" : {
"domain_count" : {
"doc_count_error_upper_bound" : 46,
"buckets" : [
{
"key" : "w3.org",
"doc_count" : 100
},
{
"key" : "google.com",
"doc_count" : 52
},
...
]
}
}
}
确保您使用的是 _search
终点而不是 _count
。
如果您不想限制对特定域的查询,例如 w3.org
或 google.com
,您可以提供 match_all
查询。它将为您提供所有可能的 domain
值及其 doc_count
.
GET /myindex/_search
{
"query": {
"bool": {
"must": {
"match_all": {
}
}
}
},
"aggregations":{
"domain_count":{
"terms":{
"field": "domain"
}
}
}
}