elasticsearch 如何查询elasticsearch以获取嵌套属性,elasticsearch,kibana,elasticsearch,Kibana" /> elasticsearch 如何查询elasticsearch以获取嵌套属性,elasticsearch,kibana,elasticsearch,Kibana" />

elasticsearch 如何查询elasticsearch以获取嵌套属性

elasticsearch 如何查询elasticsearch以获取嵌套属性,elasticsearch,kibana,elasticsearch,Kibana,我对elasticsearch非常陌生,正在尝试为以下json数据组合一个查询(在Kibana中): { "RepoCount": 2, "ThirdPartyRepoCount": 1, "RepoReadMeCount": 1, "date": "2019-10-25 12:02:41", "projects": [ { "key": "GA", "id": 884,

我对elasticsearch非常陌生,正在尝试为以下json数据组合一个查询(在Kibana中):

{ "RepoCount": 2, "ThirdPartyRepoCount": 1, "RepoReadMeCount": 1, "date": "2019-10-25 12:02:41", "projects": [ { "key": "GA", "id": 884, "name": "Company Archive", "description": "An archive for old dormant or abandoned git projects", "type": "NORMAL", "Repos": [ { "id": 28, "name": "address", "scmId": "git", "NumberFiles": 319, "HasReadMe": false, "GitRepoUrl": "blablabla.git", "LastCommitDate": "08/16/2013", }, { "id": 364, "name": "api", "scmId": "git", "NumberFiles": 377, "HasReadMe": false, "GitRepoUrl": "blablabla.git", "LastCommitDate": "07/01/2014", } ] } ] } { “重新计数”:2, “第三方报告”:1, “RepoReadMeCount”:1, “日期”:“2019-10-25 12:02:41”, “项目”:[ { “密钥”:“GA”, “id”:884, “名称”:“公司档案”, “说明”:“旧的休眠或废弃git项目的存档”, “类型”:“正常”, “回购协议”:[ { “id”:28, “姓名”:“地址”, “scmId”:“git”, “数字文件”:319, “HasReadMe”:错误, “GitRepoUrl”:“blabla.git”, “上次提交日期”:“2013年8月16日”, }, { “id”:364, “名称”:“api”, “scmId”:“git”, “数字文件”:377, “HasReadMe”:错误, “GitRepoUrl”:“blabla.git”, “最后提交日期”:“2014年1月7日”, } ] } ] } 我想编写查询,以获取项目和“回购”下的数据。 我已经将json数据导入到名为
gitrepos
的索引中,并成功创建了一个索引模式。我尝试过如下查询:

获取gitrepos/projects/\u搜索

GET gitrepos/projects/REPOS/\u search

但是没有运气。 我唯一能去工作的就是:
获取gitrepos

这只会让我找回一切。
我想深入研究,但上述方法不起作用。

这是如何实现的?

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

GET gitrepos/_search
{
  "query": {
    "bool": {
      "must": [
        { "match": { "projects.Repos.GitRepoUrl": "blablabla.git" }}
      ]
    }
  }
}
对于要在单个文档中的多个字段上进行匹配的更复杂的搜索,需要使用


如果您想直接搜索单个回购文件,您需要在各自的索引中为这些元素编制索引。

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

GET gitrepos/_search
{
  "query": {
    "bool": {
      "must": [
        { "match": { "projects.Repos.GitRepoUrl": "blablabla.git" }}
      ]
    }
  }
}
对于要在单个文档中的多个字段上进行匹配的更复杂的搜索,需要使用


如果您想直接搜索单个回购文件,您需要在各自的索引中为这些元素编制索引。

因此我的端点保持相当基本,允许我向下搜索的是匹配或术语查询?搜索端点是索引,而不是索引中的子文档。您将使用Elasticsearch查询语言查询这些子文档中的特定术语。Elasticsearch将返回每个匹配项的完整文档,除非您对其进行筛选。在我的情况下,它一直在返回完整文档,这并不完全是我想要的。在我看来,您可能希望使用您的个人git repo作为文档来重新索引您的数据。你可能可以让你现有的数据工作(ish),但这将是相当多的工作。谢谢,这是我昨天做的。每个“GitRepo”现在都是它自己的文档。因此我的端点保持相当基本,允许我向下搜索的是匹配或术语查询?搜索端点是索引,而不是索引中的子文档。您将使用Elasticsearch查询语言查询这些子文档中的特定术语。Elasticsearch将返回每个匹配项的完整文档,除非您对其进行筛选。在我的情况下,它一直在返回完整文档,这并不完全是我想要的。在我看来,您可能希望使用您的个人git repo作为文档来重新索引您的数据。你可能可以让你现有的数据工作(ish),但这将是相当多的工作。谢谢,这是我昨天做的。每个“GitRepo”现在都是自己的文档。