Как создать ElasticSearch Type

Я iOS Swift разработчик и я использую ElasticSearch внутри моего приложения. Я пытаюсь обернуть голову, как объявить type в ES какая разница между type а также documentи который наиболее похож на object/data model,

В Swift Я бы создал object или же data model как это:

class Sneakers{
       var condition: String?
       var name: String?
}

Говорят, что я создал объект с именем Sneakers с 2 свойствами: "условие" и "имя", оба типа String,

Я знаю, чтобы создать и настроить ES на Index Я использую следующее:

curl -XPOST <bonsai_url>/myIndexName //I'm using Heroku & Bonsai for my ES cluster

Затем я могу установить тип так

curl -XPOST <bonsai_url>/myIndexName/sneakerType

Где я заблудился, как настроить sneakerType для использования моей модели данных Sneakers в качестве справочной информации для поиска? Внутри моего приложения пользователи могут искать обувь по объекту Sneakers.

Я знаю, что это что-то вроде

curl -XPOST <bonsai_url>/myIndexName/sneakerType -d '
{
   "sneakers": {
      "properties": {
        "condition": {
          "type": string
        },
        "name": {
          "type": string
        }
      }
   }
}
'

Мои вопросы будут в ES:

  1. какая разница между type и document
  2. между типом и документом, который будет эквивалентен модели данных и будет fields быть эквивалентом properties?
  3. после того, как я создаю свой index имя и typeкак мне сделать type сослаться на мой data model И его properties
  4. мой последний вопрос будет что _mapping для и я должен использовать это в моей команде curl вместо этого?

1 ответ

Решение

В ES type является эквивалентом class/data model/object,

В ES fields являются эквивалентом класса / модели данных / объекта properties,

document это то, что на самом деле ищется внутри индекса. Если я сопоставлю type из sneakers и внутри index есть 2 пары тапок objects тогда index будет 2 documents внутри него.

Mappings как вы устанавливаете index таким образом type И его properties будет приравнять к моему object или же data model И его properties,

Я сначала создал файл с именем sneakerfile.jsonи добавил этот код внутри него

{
   "sneakers": {
      "properties": {
        "condition": {
          "type": "string"
        },
        "name": {
          "type": "string"
        }
      }
   }
}
//sneakers is being treated like my Sneakers Swift class type
//the properties condition & name are of type string just like my Swift's Sneaker's class's properties

Затем внутри терминала я создал свой ES index запустив

curl -XPOST <BONSAI_URL>/firebase

Теперь, когда у меня есть index названный firebase Я создаю свой ES type и назовите это sneakers и я использую sneaker.json файл для заполнения _mappings ключ

curl -XPOST <BONSAI_URL>/firebase/_mappings/sneakers -d@sneakerfile.json

Теперь, когда я хочу посмотреть, что у меня внутри mappings ключ, когда я бегу:

curl -XGET <BONSAI_URL>/firebase/_mappings?pretty

Я получу

{
  "firebase" : {
    "mappings" : {
      "sneakers" : {
        "properties" : {
          "condition" : {
            "type" : "string"
          },
          "name" : {
            "type" : "string"
          }
        }
      }
    }
  }
}
Другие вопросы по тегам