2016-07-14 1 views
0

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

Давайте представим себе, что у нас есть несколько бегунов в гонке с контрольными точками вокруг трассы.

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

{ 
    "name"  : "John Smith", 
    "age"  : "31", 
    "checkpoints": [ 
     { 
      "checkpoint" : "Race Start" 
      "timestamp" : "..." 
     } 
    ] 
} 

Мой вопрос, есть ли смысл, чтобы иметь возможность расширить перечень контрольно-пропускных пунктов, и если да, то что будет представлять собой запрос пример (POST), чтобы сделать что?

Update:

Ожидаемый результат:

{ 
    "name"  : "John Smith", 
    "age"  : "31", 
    "checkpoints": [ 
     { 
      "checkpoint" : "Race Start" 
      "timestamp" : "..." 
     }, 
     { 
      "checkpoint" : "Checkpoint1" 
      "timestamp" : "..." 
     }, 
     { 
      "checkpoint" : "Checkpoint2" 
      "timestamp" : "..." 
     } 
    ] 
} 
+0

Что вы имеете в виду 'расширить список checkpoints'? Добавить другой объект в массив? –

+0

Добавленный ожидаемый результат –

ответ

1

Вы не должны делать что-то конкретное.

При запуске PUT запрос:

curl -XPUT localhost:9200/your_index/your_type/1 -d '{ 
    "name"  : "John Smith", 
    "age"  : "31", 
    "checkpoints": [ 
     { 
      "checkpoint" : "Race Start", 
      "timestamp" : "..." 
     } 
    ] 
}' 

вы получите точно такой же в GET запросе:

curl -XGET localhost:9200/your_index/your_type/1 

Результат:

{"_index":"your_index","_type":"your_type","_id":"1","_version":2,"found":true,"_source":{ 
     "name"  : "John Smith", 
     "age"  : "31", 
     "checkpoints": [ 
      { 
       "checkpoint" : "Race Start", 
       "timestamp" : "..." 
      } 
     ] 
    }} 

Таким образом, при запуске:

curl -XPUT localhost:9200/your_index/your_type/1 -d '{ 
    "name"  : "John Smith", 
    "age"  : "31", 
    "checkpoints": [ 
     { 
      "checkpoint" : "Race Start", 
      "timestamp" : "..." 
     }, 
     { 
      "checkpoint" : "Checkpoint1", 
      "timestamp" : "..." 
     }, 
     { 
      "checkpoint" : "Checkpoint2", 
      "timestamp" : "..." 
     } 
    ] 
}' 

Вы получите:

{"_index":"your_index","_type":"your_type","_id":"1","_version":3,"found":true,"_source":{ 
     "name"  : "John Smith", 
     "age"  : "31", 
     "checkpoints": [ 
      { 
       "checkpoint" : "Race Start", 
       "timestamp" : "..." 
      }, 
      { 
       "checkpoint" : "Checkpoint1", 
       "timestamp" : "..." 
      }, 
      { 
       "checkpoint" : "Checkpoint2", 
       "timestamp" : "..." 
      } 
     ] 
    }} 
+0

Спасибо, сэр! Я потратил около 2 часов и пробовал всевозможные специальные схемы, используя скрипты '/ _update' и т. Д. Это всегда проще, чем вы думаете. –

+0

@StoyanDekov np man!) –