Elasticsearch вложенный запрос и сортировка - PullRequest
0 голосов
/ 27 сентября 2018

Может кто-нибудь помочь мне понять, что Elastic означает под вложенным.В документации https://www.elastic.co/guide/en/elasticsearch/reference/current/search-request-sort.html#_nested_sorting_examples - это пример, который не показывает, как выглядит объект документа.Похоже, я должен представить отображение из поискового запроса.Запрос выглядит так:

POST /_search
{
   "query": {
      "nested": {
         "path": "parent",
         "query": {
            "bool": {
                "must": {"range": {"parent.age": {"gte": 21}}},
                "filter": {
                    "nested": {
                        "path": "parent.child",
                        "query": {"match": {"parent.child.name": "matt"}}
                    }
                }
            }
         }
      }
   },
   "sort" : [
      {
         "parent.child.age" : {
            "mode" :  "min",
            "order" : "asc",
            "nested": {
               "path": "parent",
               "filter": {
                  "range": {"parent.age": {"gte": 21}}
               },
               "nested": {
                  "path": "parent.child",
                  "filter": {
                     "match": {"parent.child.name": "matt"}
                  }
               }
            }
         }
      }
   ]
}

Может кто-нибудь написать структуру документа, на которой будет работать этот запрос?

Ответы [ 2 ]

0 голосов
/ 01 октября 2018

В Elastic вложенный означает, что это массив объектов.Чтобы сохранить массив объектов в поле в упругом поиске, вы должны сопоставить поле с вложенным при создании индекса.

PUT parent
       {
       "mappings": {
        "doc":{
      "properties": {
        "name":{
          "type": "text"
        },
        "age":{
          "type": "integer"
        },
        "child":{
          "type": "nested",
          "properties": {
            "name":{
              "type":"text"
            },
            "age":{
              "type":"integer"
            }
          }

        }
      }
    }
  }
}

, и образец вложенного документа может быть вставлен следующим образом:

POST parent/doc
{
  "name":"abc",
  "age":50,
  "child":[
    {
      "name":"son1",
      "age":25
    },
    {
      "name":"adughter1",
      "age":20
    }
    ]
}
0 голосов
/ 27 сентября 2018

Как то так.

{
    "parent": {
        "name": "Elasti Sorch",
        "age": 23,
        "child": [
           {
              "name": "Kibana Lion",
              "age": 12
           }, 
           {
              "name": "Matt",
              "age": 15
           }
        ] 
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...