Как создать 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:
- какая разница между
type
иdocument
- между типом и документом, который будет эквивалентен модели данных и будет
fields
быть эквивалентомproperties
? - после того, как я создаю свой
index
имя иtype
как мне сделатьtype
сослаться на мойdata model
И егоproperties
- мой последний вопрос будет что
_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"
}
}
}
}
}
}