В чем разница между nested и object?

Можете мне помощь в коде у меня нет результат!!
всегда не может найти вложенный объект и можете объяснить разница object type и nested type

Тип object "рассплющивает" структуру при индексации и поэтому все внутриние объекты сливаются в один, nested object индексирует объекты как скрытые записи, что позволяет их искать по отдельности. Попробуйте запустить следующий пример и посмотреть, что происходит. Если мы используем object и первый и второй поиск вернет нам первую запись:

DELETE test

PUT test
{
  "mappings": {
    "properties": {
      "title": {
        "type": "text"
      },
      "author": {
        "type": "object",
        "properties": {
          "first": {
            "type": "text"
          },
          "last": {
            "type": "text"
          }
        }
      }
    }
  }
}

PUT test/_doc/1
{
  "title": "В чем разница между nested и object?",
  "author": [{
    "first": "Sanzhar",
    "last": "Kaiyrbek"
  }, {
    "first": "Igor",
    "last": "Motov"
  } ]
}

POST test/_search
{
  "query": {
    "bool": {
      "must": [
        {
          "match": {
            "author.first": "Sanzhar"
          }
        },
        {
          "match": {
            "author.last": "Kaiyrbek"
          }
        }
      ]
    }
  }
}


POST test/_search
{
  "query": {
    "bool": {
      "must": [
        {
          "match": {
            "author.first": "Sanzhar"
          }
        },
        {
          "match": {
            "author.last": "Motov"
          }
        }
      ]
    }
  }
}

А если мы воспользуемся nested (с соответствующим запросом nested), то второй запрос нам ничего не вернет, поскольку он ищет nested объекты по отдельности и у нас нет автора и именем "Sanzhar Motov"

DELETE test

PUT test
{
  "mappings": {
    "properties": {
      "title": {
        "type": "text"
      },
      "author": {
        "type": "nested",
        "properties": {
          "first": {
            "type": "text"
          },
          "last": {
            "type": "text"
          }
        }
      }
    }
  }
}

PUT test/_doc/1
{
  "title": "В чем разница между nested и object?",
  "author": [{
    "first": "Sanzhar",
    "last": "Kaiyrbek"
  }, {
    "first": "Igor",
    "last": "Motov"
  } ]
}

POST test/_search
{
  "query": {
    "nested": {
      "path": "author",
      "query": {
        "bool": {
          "must": [
            {
              "match": {
                "author.first": "Sanzhar"
              }
            },
            {
              "match": {
                "author.last": "Kaiyrbek"
              }
            }
          ]
        }
      }
    }
  }
}


POST test/_search
{
  "query": {
    "nested": {
      "path": "author",
      "query": {
        "bool": {
          "must": [
            {
              "match": {
                "author.first": "Sanzhar"
              }
            },
            {
              "match": {
                "author.last": "Motov"
              }
            }
          ]
        }
      }
    }
  }
}


вот снимок можете сделать мне агрегацию Company => Krp=>Histories=>Value
У меня результат вообще не приходит

Но спасибо за пояснение объекта и nested

Я не могу сделать Вам агрегацию, потому что я не знаю какая агрегация вам нужна и каким образом Ваши данные были проиндексированы. Я могу попробовать помочь разобраться, почему Ваш запрос не возвращает нужные результаты.

спасибо за такой быстрый ответ,как я смогу проиндексировать свой данные в ElasticSearch. За ранее спасибо за ответ

В документации достаточно подробно описано, как это можно сделать: https://www.elastic.co/guide/en/elasticsearch/reference/current/getting-started-index.html

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.