我是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/_search
GET 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文档,则需要在它们自己的索引中为每个元素建立索引。