查询return在elasticsearch上的搜索差异
Query return the search difference on elasticsearch
以下查询看起来如何:
场景:
我有两个基数(基数1和2),每个基数有1列,我想看看它们之间的区别,即基数1中存在什么基数 2 中不存在,将列的虚构名称视为主机名。
示例:
Base1.Hostname 的选定值用于 Base2.Hostname?
YES → DO NOT RETURN
NO → RETURN
我在 python 中有这个用于以下功能:
def diff(first, second):
second = set (second)
return [item for item in first if item not in second]
示例匹配等于:
GET /base1/_search
{
"query": {
"multi_match": {
"query": "webserver",
"fields": [
"hostname"
],
"type": "phrase"
}
}
}
我想将此架构迁移到弹性搜索,以便将来根据这些 search
在基础
中的变化频率生成 forecast
这可以通过聚合来完成。
- 从 base1 和 base2 索引中收集所有主机名
- 对于每个主机名在 base2 中的出现次数
- 只保留 base2 计数为 0 的桶
GET base*/_search
{
"size": 0,
"aggs": {
"all": {
"composite": {
"size": 10,
"sources": [
{
"host": {
"terms": {
"field": "hostname"
}
}
}
]
},
"aggs": {
"base2": {
"filter": {
"match": {
"_index": "base2"
}
}
},
"index_count_bucket_filter": {
"bucket_selector": {
"buckets_path": {
"base2_count": "base2._count"
},
"script": "params.base2_count == 0"
}
}
}
}
}
}
顺便说一句,不要忘记使用分页来获取其余结果。
参考文献:
以下查询看起来如何:
场景:
我有两个基数(基数1和2),每个基数有1列,我想看看它们之间的区别,即基数1中存在什么基数 2 中不存在,将列的虚构名称视为主机名。
示例:
Base1.Hostname 的选定值用于 Base2.Hostname?
YES → DO NOT RETURN
NO → RETURN
我在 python 中有这个用于以下功能:
def diff(first, second):
second = set (second)
return [item for item in first if item not in second]
示例匹配等于:
GET /base1/_search
{
"query": {
"multi_match": {
"query": "webserver",
"fields": [
"hostname"
],
"type": "phrase"
}
}
}
我想将此架构迁移到弹性搜索,以便将来根据这些 search
在基础
forecast
这可以通过聚合来完成。
- 从 base1 和 base2 索引中收集所有主机名
- 对于每个主机名在 base2 中的出现次数
- 只保留 base2 计数为 0 的桶
GET base*/_search
{
"size": 0,
"aggs": {
"all": {
"composite": {
"size": 10,
"sources": [
{
"host": {
"terms": {
"field": "hostname"
}
}
}
]
},
"aggs": {
"base2": {
"filter": {
"match": {
"_index": "base2"
}
}
},
"index_count_bucket_filter": {
"bucket_selector": {
"buckets_path": {
"base2_count": "base2._count"
},
"script": "params.base2_count == 0"
}
}
}
}
}
}
顺便说一句,不要忘记使用分页来获取其余结果。
参考文献: