我是Elasticsearch的新手,正在尝试对以下json数据进行查询(在Kibana中):

{
“RepoCount”:2
“ThirdPartyRepoCount”:1
“RepoReadMeCount”:1
“date”:“2019-10-25 12:02:41”,
“项目”:[
{
“key”:“GA”,
“id”:884,
“名称”:“公司文件”,
“description”:“旧的休眠或废弃的git项目的文件”,
“type”:“NORMAL”,
“回购”:[
{
“id”:28,
“name”:“地址”,
“scmId”:“git”,
“NumberFiles”:319,
“HasReadMe”:否,
“GitRepoUrl”:“blablabla.git”,
“LastCommitDate”:“08/16/2013”​​,
},
{
“id”:364,
“name”:“api”,
“scmId”:“git”,
“NumberFiles”:377,
“HasReadMe”:否,
“GitRepoUrl”:“blablabla.git”,
“LastCommitDate”:“2014年7月1日”,
}
]
}
]
}

我想编写查询以获取项目和“回购”下的数据。
我已将json数据导入名为gitrepos的索引中,并成功创建了索引模式。我已经尝试过类似的查询:
GET gitrepos/projects/_searchGET gitrepos/projects/REPOS/_search
但是没有运气。
我唯一可以工作的是:GET gitrepos这只是让我退回一切。
我想更深入地进行研究,但是以上方法不起作用。
怎么做?

最佳答案

您的索引名为gitrepos,因此您的搜索端点是GET /gitrepos/_search。索引中的每个文档都将类似于您上面的文档;您可以返回具有Repos符合某些条件的文档。

GET gitrepos/_search
{
  "query": {
    "bool": {
      "must": [
        { "match": { "projects.Repos.GitRepoUrl": "blablabla.git" }}
      ]
    }
  }
}

对于要在单个文档中的多个字段上进行匹配的更复杂的搜索,您需要使用nested query

如果要直接搜索单个Repo文档,则需要在它们自己的索引中为每个元素建立索引。

10-04 19:12