我是iOS Swift
开发人员,我在我的应用中使用ElasticSearch
。我试图围绕如何在type
中声明ES
,type
和document
之间有什么区别,哪个与{object/data model
最相似? {1}}。
在Swift
我会像这样创建object
或data model
:
class Sneakers {
var condition: String?
var name: String?
}
这就是说我创建了一个名为Sneakers的对象,其中包含2个属性:“condition”和“name”两个Optional
(问号)类型String
。
我知道创建并将我的ES设置为Index
我使用以下内容:
curl -XPOST <bonsai_url>/myIndexName //I'm using Heroku & Bonsai for my ES cluster
然后我可以设置类似的类型
curl -XPOST <bonsai_url>/myIndexName/sneakerType
我迷失的地方是如何设置索引以使用我的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
,以便可以搜索#UniqueUsageFkAndBuildingFk
是什么,我应该在我的curl命令中使用它吗?答案 0 :(得分:3)
在ES
中,type
相当于class/data model/object
。
在ES
中,fields
等同于类/数据模型/对象的properties
。
document
是在索引中实际搜索到的内容的结果。如果在index
内有2对Sneaker types
,则index
内部会有2 documents
。
Mappings
是1-如何在type
内部index
搜索index
以及如何设置type
以便fields
和object/data model
properties
等同于type
,它是fields
。这个type
和sneakerfile.json
就是您要进行搜索的内容。
我首先通过创建名为{
"sneakers": { // this is a type
"properties": {
"condition": { // it has a field named ‘condition’
"type": "string"
},
"name": { // it has a field named ‘name’
"type": "string"
}
}
}
}
// sneakers is being treated like my Sneakers Swift class/dataModel from the original question
// the fields “condition” & “name” are of type String just like my Swift's Sneakers’ class' properties (since Optionals are a Swift thing that’s not included here)
的文件创建了ES index
并在其中添加了此代码
firebase
然后在终端内部我通过运行:
创建名为curl -XPOST <BONSAI_URL>/firebase
的{{1}}
index
1-现在,我有一个名为firebase
的{{1}},一个名为ES type
的{{1}},我现在需要sneakers
可以在type
中搜索{4}填充index
密钥:
_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"
}
}
}
}
}
}
// Final Result -the index named firebase now can return documents of type ‘sneakers’. You can search for those documents by searching on the ‘condition’ and ‘name’ fields
,以便您可以使用它。我在2年多的时间里没有回到这个答案,但可能尝试创建另一个definitely 100% works
并将type
设置为这样的sneakersTestFile.json
。 TEST TEST TEST 看看会发生什么。我自己没有尝试过这个,但我知道它更容易阅读。
{
"sneakersTest": {
"condition": "string"
"name": "string"
}
}
假设您已经创建了名为index
的{{1}}运行:
firebase
然后运行:
curl -XPOST <BONSAI_URL>/firebase/_mappings/sneakersTest -d@sneakersTestFile.json
搜索它以查看会发生什么