请帮我找一个机制来聚合以下域名或证明它在当前的API中不存在。
<% Dim myarraystring, sql
sql = "SELECT x1 FROM table"
myarraystring = ""
rs.open sql,conn
Do While Not rs.eof
myarraystring = myarraystring & rs("x") & ","
rs.movenext
Loop
rs.close %>
<script>var chartdata=[{"values":[<%= myarraystring %>],}];</script>
如何查询ES以查找有关从特定大学毕业的联系人数量的统计数据?
我找到了一种可能性,但它没有给我想要的结果,因为它不能回答上面关于联系人的问题,而只回答他们的特定配置文件(嵌套文档):
curl -XDELETE 127.0.0.1:9200/test_index
curl -XPUT 127.0.0.1:9200/test_index -d '{
"mappings": {
"contact": {
"properties": {
"facebook_profile": {
"type": "nested",
"properties": {
"education": {
"type": "string"
},
"year": {
"type": "integer"
}
}
},
"google_profile": {
"type": "nested",
"properties": {
"education": {
"type": "string"
},
"year": {
"type": "integer"
}
}
}
}
}
}
}'
curl -XPUT 127.0.0.1:9200/test_index/contact/contact1 -d '{
"google_profile": {
"education": "stanford", "year": 1990
}
}'
curl -XPUT 127.0.0.1:9200/test_index/contact/contact2 -d '
{
"facebook_profile": {
"education": "stanford", "year": 1990
}
}'
是什么让我:
curl -XPOST '127.0.0.1:9200/test_index/_search?search_type=count&pretty=true' -d '{
"aggs": {
"facebook_educations": {
"aggs": {
"field": {
"terms": {
"field": "contact.facebook_profile.education"
},
"aggs": {
"reverse": {
"reverse_nested": {
}
}
}
}
},
"nested": {
"path": "contact.facebook_profile"
}
},
"google_educations": {
"aggs": {
"field": {
"terms": {
"field": "contact.google_profile.education"
},
"aggs": {
"reverse": {
"reverse_nested": {
}
}
}
}
},
"nested": {
"path": "contact.google_profile"
}
}
}
}'
但是在这里我不能确定一个发现的联系人是相同还是不同的doc(父母),我分别无法回答我的初步问题。
感谢您的任何建议。
答案 0 :(得分:0)
听起来你正试图aggregate on multiple fields。 Elasticsearch不直接支持这种方法,但有一些方法可以解决这个问题,并获得您正在寻找的结果。
查看discussion on Github以及documentation。
如果我正确理解,是否&#34; stanford&#34;显示在facebook_profile.education
或google_profile.education
中,您希望contact
仅在聚合中计算一次。
您应该可以通过以下两种方式之一来完成此任务:
使用脚本连接存储在字段中的值:
{
"aggs": {
"by_education": {
"terms": {
"script": "doc['contact.facebook_profile.education'].values + doc['contact.google_profile.education'].values"
}
}
}
}
您可以使用copy_to
选项在索引时创建一个包含两个字段值的新专用字段。然后在单个字段上聚合。例如,您可以将两个字段的内容复制到名为education_combined
的新字段。
{
"mappings":{
"contact":{
"properties":{
"facebook_profile":{
"type":"nested",
"properties":{
"education":{
"type":"string",
"copy_to":"education_combined"
},
"year":{
"type":"integer"
}
}
},
"google_profile":{
"type":"nested",
"properties":{
"education":{
"type":"string",
"copy_to":"education_combined"
},
"year":{
"type":"integer"
}
}
},
"education_combined":{
"type":"string"
}
}
}
}
}
然后,只需汇总education_combined
:
{
"aggs": {
"by_education": {
"terms": { "field": "education_combined" }
}
}
}