Elastic search(2.4) - 搜索和聚合数组
Elastic search(2.4) - search and aggregate over arrays
我有一个映射为 -
的索引
GET /sampledesc/desc/_mapping
{
"sampledesc": {
"mappings": {
"desc": {
"properties": {
"labels": {
"type": "string",
"index": "not_analyzed"
},
"tags": {
"type": "string",
"index": "not_analyzed"
},
"user_id": {
"type": "long"
}
}
}
}
}
}
我在其中添加了一些数据 -
PUT /sampledesc/desc/1
{
"user_id": 1,
"tags": ["tag1", "tag2", "tag3"],
"labels": ["label1","label2"]
}
PUT /sampledesc/desc/2
{
"user_id": 2,
"tags": ["tag2","tag3",],
"labels": ["label2","label4"]
}
PUT /sampledesc/desc/3
{
"user_id": 3,
"tags": ["tag7"],
"labels": ["label1","label4"]
}
我想使用这些规则查询此数据:
- 查找给定标签列表的所有用户。
- 对于这些用户,按计数对标签进行分组。
例如,我想查询同时具有 tag2 和 tag3 的用户,并将标签及其计数按排序顺序分组。在三个用户的给定示例数据中,我的结果将是 label2 = 2; label1 = 1, label4 = 1
.
您好,您可以使用以下查询
{
"aggs": {
"label_group": {
"terms": {
"field": "labels",
"size": 10
}
}
},
"query": {
"bool": {
"must": [{
"terms": {
"tags": [
"tag2"
]
}
}, {
"terms": {
"tags": [
"tag3"
]
}
}]
}
}
}
希望对您有所帮助
谢谢
我有一个映射为 -
的索引GET /sampledesc/desc/_mapping
{
"sampledesc": {
"mappings": {
"desc": {
"properties": {
"labels": {
"type": "string",
"index": "not_analyzed"
},
"tags": {
"type": "string",
"index": "not_analyzed"
},
"user_id": {
"type": "long"
}
}
}
}
}
}
我在其中添加了一些数据 -
PUT /sampledesc/desc/1
{
"user_id": 1,
"tags": ["tag1", "tag2", "tag3"],
"labels": ["label1","label2"]
}
PUT /sampledesc/desc/2
{
"user_id": 2,
"tags": ["tag2","tag3",],
"labels": ["label2","label4"]
}
PUT /sampledesc/desc/3
{
"user_id": 3,
"tags": ["tag7"],
"labels": ["label1","label4"]
}
我想使用这些规则查询此数据:
- 查找给定标签列表的所有用户。
- 对于这些用户,按计数对标签进行分组。
例如,我想查询同时具有 tag2 和 tag3 的用户,并将标签及其计数按排序顺序分组。在三个用户的给定示例数据中,我的结果将是 label2 = 2; label1 = 1, label4 = 1
.
您好,您可以使用以下查询
{
"aggs": {
"label_group": {
"terms": {
"field": "labels",
"size": 10
}
}
},
"query": {
"bool": {
"must": [{
"terms": {
"tags": [
"tag2"
]
}
}, {
"terms": {
"tags": [
"tag3"
]
}
}]
}
}
}
希望对您有所帮助 谢谢