如何使用Python在ElasticSearch中创建嵌套索引?

时间:2015-10-06 16:40:12

标签: python elasticsearch

我在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表明这个?

1 个答案:

答案 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()