[英]Aggregate and Sort by a text field and concatenate other text fields in Elasticsearch
在Elasticsearch中,如何通過一個文本字段進行聚合和排序 ,以及如何將其他文本字段的字段值連接起來,例如, ;
?
串聯時,我的意思是串聯所有匯總文檔中同一字段的值, 而不是同一文檔中不同字段的值。
細節
我有一些帶有字段基因,標簽,注釋的小文檔,描述為
{
"mappings": {
"annotations": {
"properties": {
"species": {
"type": "text"
},
"gene": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword"
}
}
},
"tag": {
"type": "text"
},
"annotation": {
"type": "text"
}
}
}
}
}
每個基因有很多條目。 也就是說,我有:
Gene Tag Annotation
----- ----- ---------------
A1BG tag1 first gene
A2M tag1 a-macroglobulin
A2M tag2 second gene
BRCA1 tag1 breast cancer 1
BRCA1 tag3 important gene
我想查詢這些數據,按基因進行匯總和排序,然后得到如下結果:
Gene Tags Annotations
------ ----------- -------------------------------
A1BG tag1 first gene
A2M tag1; tag2 a-macroglobulin; second gene
BRCA1 tag1; tag3 breast cancer 1; important gene
谷歌搜索超過一天后,我找不到任何有意義的東西。 Elasticsearch示例主要顯示統計信息(例如計數),還有一些有關連接同一文檔中字段的示例,但是我找不到連接同一字段值的方法。 我試圖使用map
以及類似的東西:
{
"aggs" : {
"genes_agg" : {
"terms" : {
"script" : {
"source": "doc['tag'].join('; ')",
"lang": "painless"
}
}
}
}
}
但沒有任何效果。
我認為您找不到任何東西,因為您是從關系數據庫的角度來解決這個問題的。 Elasticsearch的構建就像一個文檔存儲,因此您基本上可以將BRCA1
所有標簽,注釋等放入一個文檔中。 我認為您需要重新考慮索引策略,而不是查詢策略。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.