在大多数应用中,多数实体或对象可以被序列化为包含键值对的JSON对象。一个键可以是一个字段或字段的名称,一个值可以是一个字符串,一个数字,一个布尔值,另一个对象,一些数组值,或一些其他特殊类型诸如表示日期的字符串,或代表一个地理位置的对象:

  1. {
  2. "name": "John Smith",
  3. "age": 42,
  4. "confirmed": true,
  5. "join_date": "2014-06-01",
  6. "home": {
  7. "lat": 51.5,
  8. "lon": 0.1
  9. },
  10. "accounts": [
  11. {
  12. "type": "facebook",
  13. "id": "johnsmith"
  14. },
  15. {
  16. "type": "twitter",
  17. "id": "johnsmith"
  18. }
  19. ]
  20. }

通常情况下,我们使用的术语 对象和文档是可以相互替换的。不过,有一个区别:一个对象仅仅是类似于hash、hashmap、字典或者关联数组的JSON对象,对象中也可以嵌套其他的对象。对象可能包含了另外一些对象。在Elasticsearch中,术语 文档有着特定的含义。它是指最顶层或者根对象,这个根对象被序列化成JSON 并存储到Elasticsearch中,指定了唯一ID。

warning

字段的名字可以是任何合法的字符串,但不可以包含英文句号(.)。