我使用py-elasticsearch和批量特征,例如:
//loop
action = {
"_index": "venue",
"_type": "venue",
"_id": tempid,
"_source": item
}
actions.append(action)
helpers.bulk(es, actions)
然而,在我的结果中,我看到:
"hits": [
{
"_index": "venue",
"_type": "venue",
"_id": "52e6d42fc36b4408dbe907d1",
"_score": 4.0977435,
"_source": {
"city": "Athens",
"name": "Half Note Jazz Club",
"address": "17 Trivonianou Street",
}
},
{
"_index": "venue",
"_type": "venue",
"_id": "530391abc36b442b25e8a514",
"_score": 4.023251,
"_source": {
"city": null, <--- this
"name": "life Jazz Cafe-bar",
"address": null <---- and this
}
}
]
假设当我“批量提供”ES时我还没有定义城市和地址,那么有没有办法在ES中省略这些字段?
或者,即使此文档没有此字段,ES也会始终创建空值吗? ES是通过这种方式构建的,还是应该在我的代码中搜索错误?
更新
我的完整映射如下:
<type>: {
mappings: {
<index>: {
properties: {
address: {
type: "string"
},
city: {
type: "string"
},
country: {
type: "string"
},
location: {
properties: {
coordinates: {
type: "geo_point"
},
type: {
type: "string"
}
}
},
name: {
type: "string"
}
}
}
}
}
答案 0 :(得分:0)
我不熟悉py-elasticsearch,但要么是bug存在于库中,要么在代码中,因为_source
字段始终会返回与弹性搜索一起发送的内容。
答案 1 :(得分:0)
映射中的null_value将为“null”。因此,如果要省略要编制索引的文档中不存在的字段,请不要在映射null_value
中指定null_value。