İç içe geçmiş bazı belgeleri bir Elasticsearch (v2.3.1) eşlemesine endekslemeye çalışıyorum: (based on this example from the documentation):İç içe geçme türünde Elasticsearch: "Nesne eşleştirmesi iç içe geçmişten iç içe değil", bir belge dizine eklenirken
PUT /my_index
{
"mappings": {
"blogpost": {
"properties": {
"title": { "type": "string" },
"comments": {
"type": "nested",
"properties": {
"name": { "type": "string" },
"comment": { "type": "string" }
}
}
}
}
}
}
Ancak, JSON belgelerinin bu eşleştirmeye uyması için nasıl görünmesi gerektiğini anlamıyorum. Ben
PUT /my_index/some_type/1
{
"title": "some_title",
"comments": {
"name": "some_name",
"comment": "some_comment"
}
}
yanı sıra
ile çalıştı endeksi iç içe belgelere doğru biçimidir{
"error":
{
"root_cause":
[
{
"type": "remote_transport_exception",
"reason": "[Caiman][172.18.0.4:9300][indices:data/write/index[p]]"
}
],
"type": "illegal_argument_exception",
"reason": "object mapping [comments] can't be changed from nested to non-nested"
},
"status": 400
}
yılında
PUT /my_index_some_type/1
{
"title": "some_title",
"comments": [
{
"name": "some_name",
"comment": "some_comment"
}
]
}
hangi ikisi sonuç ile? Herhangi bir çalışma örneği çok takdir görmektedir, buradaki çoğu örnek SO'da veya diğer sayfalarda belgelerin daha önce endekslenmesinden ziyade iç içe geçmiş sorgulara yoğunlaşmaktadır.
URL'nizde 'blogpost' haritalama türünü kullanarak gelmiyor musun? Sorunuzdan belli değil (yani 'some_type' vs blogpost'). Görünüşe göre 'some_type' türünde bir belge oluşturuyorsunuz ve 'yorumlar' normal bir nesneyi varsayılan olarak ayarlayacağınız için izinliydi, çünkü zaten 'blogpost' eşleme türünde 'yorumlar' adlı yuvalanmış bir nesneye sahip olduğunuzdan izin verilmiyor. – Val
Ahh hayır, cidden ... farklı kaynaklardan çok fazla kopyalayıp yapıştırdığınızda olan şey bu. Bunu bir yanıt olarak eklemek isterseniz, kabul etmekten mutluluk duyarız, böylece etrafımızdaki bir örnek daha var. – Dirk