select matching objects from array in elasticsearch

后端 未结 1 576
无人共我
无人共我 2020-12-06 17:56
{
    class: 1,
    users: [{
        name: \'abc\',
        surname: \'def\'
    }, {
        name: \'xyz\',
        surname: \'wef\'
    }, {
        name: \'abc\'         


        
相关标签:
1条回答
  • 2020-12-06 18:34

    Then if you have your users field mapped as nested type, it's a good start!

    Using nested inner_hits, you can retrieve only the matching user names with a query like this one:

    {
      "_source": false,
      "query": {
        "nested": {
          "path": "users",
          "inner_hits": {        <---- this is where the magic happens
            "_source": [
              "name"
            ]
          },
          "query": {
            "bool": {
              "must": [
                {
                  "term": {
                    "users.name": "abc"
                  }
                }
              ]
            }
          }
        }
      }
    }
    
    0 讨论(0)
提交回复
热议问题