我在elasticsearch-py中使用批量索引以字典数组的形式添加包含嵌套项的文档(在本例中为address
):
{'Name': 'Smith, John',
'ID': '3327',
'Nationality': 'English',
'address': [
{
'ID': '5',
'City': 'Milwaukee',
'Latlon': '43.0526,-87.9199',
'State': 'WI'
},
...
]
}
我创建了一个动作列表,每个文档都有一个动作:
{
"_index": "myindex",
"_type": "mytype",
"_source": the_doc
}
然后通过helpers.bulk(es, actions)
我想指定address
是嵌套对象。我在哪里用elasticsearch-py
向ES表明这个?
答案 0 :(得分:1)
请参阅:https://github.com/elastic/elasticsearch-py/issues/278#issuecomment-145923743
我使用了DSL library。我创建了一个mytype.py
文件:
from elasticsearch_dsl import DocType, Nested, String
class MyType(DocType):
name = String()
nationality = String()
address = Nested(
include_in_parent=True,
properties={
'location': String(),
'state': String(),
'city': String(),
}
)
然后我将此文件包含在内,并使用include_in_parent
将映射放入elasticsearch中,以便突出显示其他内容:
from elasticsearch_dsl import Index
from mytype import MyType
myindex = Index('myindex')
myindex.doc_type(MyType)
myindex.create()