从Elasticsearch获取不同的字段

时间:2019-02-25 10:45:04

标签: elasticsearch elastic-stack

我有100万个文档,其中有一个名为id的字段。所有100万个文档的id字段都不同。 例如:1.id:http://www.bing.com/search?q=malaysia. 2.id:http://www.google.com/search?q=singapore. 3.id:http://www.bing.com/search?q=india. 4.id:http://www.google.com/search?q=america 5.id:http://www.duckduckgo.com/?q=africa 6.id:http://www.duckduckgo.com/?q=asia 有人可以帮我构成一个查询,只在这里获取3个不同的网址。我只想获取google.com,bing.com,duckduckgo.com。

1 个答案:

答案 0 :(得分:0)

可以将语法文本化,但这应该可行。只需使用脚本来拆分您的网址字符串即可。

{
  "aggs": {
    "urls": {
      "terms": {
        "field": "id",
        "script" : "def path = doc['id'].value; int currentSplit = path.indexOf("//"); if (currentSplit > 0) { path = path.substring(currentSplit + 1); currentSplit = path.indexOf("/"); if (currentSplit > 0) { path = path.substring(0, currentSplit) } } return path"
      }
    }
  }
}

如果您需要大量汇总,最好的做法是在文档上为域名建立索引:)。