我使用蒙戈,彈性搜索和這條河插件字段映射:https://github.com/richardwilly98/elasticsearch-river-mongodbElasticSearch河搞亂
我已經成功地設置好一切在這條河一直蒙戈時更新更新ES數據,但這條河直接將Mongo文檔中的所有屬性複製到ES中,但我只需要這些記錄的一小部分。例如。如果一個Mongo文檔有30個屬性,它們都將被放入ES中,而不僅僅是我想要的5個。我認爲這個問題與映射有關,並且我遵循了幾個文檔和另一個堆棧溢出線程(curl -X POST -d @mapping.json + mapping not created),但它仍然不適合我。下面是我在做什麼:
我創建我的指數有:
curl -XPOST "http://localhost:9200/mongoindex" -d @index.json
index.json:
{
"settings" : {
"number_of_shards" : 1
},
"analysis" : {
"analyzer" : {
"str_search_analyzer" : {
"tokenizer" : "keyword",
"filter" : ["lowercase"]
},
"str_index_analyzer" : {
"tokenizer" : "keyword",
"filter" : ["lowercase", "ngram"]
}
},
"filter" : {
"ngram" : {
"type" : "ngram",
"min_gram" : 2,
"max_gram" : 20
}
}
}
}
然後運行:
curl -XPOST "http://localhost:9200/mongoindex/listing/_mapping" -d @mapping.json
有了這個數據:
{
"listing":{
"properties":{
"_all": {
"enabled": false
},
"title": {
"type": "string",
"store": false,
"index": "not_analyzed"
},
"bathrooms": {
"type": "integer",
"store": true,
"index": "analyzed"
},
"bedrooms": {
"type": "integer",
"store": true,
"index": "analyzed"
},
"address": {
"type": "nested",
"include_in_parent": true,
"store": true,
"properties": {
"counrty": {
"type":"string"
},
"city": {
"type":"string"
},
"stateOrProvince": {
"type":"string"
},
"fullStreetAddress": {
"type":"string"
},
"postalCode": {
"type":"string"
}
}
},
"location": {
"type": "geo_point",
"full_name": "geometry.coordiantes",
"store": true
}
}
}
}
後來終於與創建河流:
curl -XPUT "http://localhost:9200/_river/mongoindex/_meta" -d @river.json
river.json:
{
"type": "mongodb",
"mongodb": {
"db": "blueprint",
"collection": "Listing",
"options": {
"secondary_read_preference": true,
"drop_collection": true
}
},
"index": {
"name": "mongoindex",
"type": "listing"
}
}
畢竟,這條河在ES是人口工作,但現在它的蒙戈的完整副本,我需要修改映射,但它不會生效。我錯過了什麼?
這是我的地圖在河流運行後的樣子....沒有什麼像我想要的樣子。
你能再試一次,但在創建河之前獲得與此命令的映射並添加到您的問題? curl -XGET'http:// localhost:9200/_mapping?pretty' –
我得到了預期的結果,那個映射在第二個命令後是正確的。它在創建河流時重置它。看第二張截圖。 –