我的elasticsearch中有一个index,index名字是my_index, index中有一个type, 名字是my_type, my_type中有两个document, 他们都是有3个字段,分别是name, address, id, 现在我往my_type里面又增加了一个document, 但是它包含4个字段, name, address, id和sex,英文mapping是动态的,这个时候mapping就自动增加了一个sex,也变成了4个字段。 现在我想用elasticsearch的API用sex的条件搜索出这个document,但是不返回结果。
然后我就又尝试把只有3个字段的两个document都加上了sex字段,这样所有的documen格式就都是一样的了, 可是,还是搜索不出结果,如果我用原来就存在的字段, 比如name作为条件去搜索,就可以, 请问大侠, 我这是哪里不对呢?
然后我就又尝试把只有3个字段的两个document都加上了sex字段,这样所有的documen格式就都是一样的了, 可是,还是搜索不出结果,如果我用原来就存在的字段, 比如name作为条件去搜索,就可以, 请问大侠, 我这是哪里不对呢?
2 个回复
xupiao
赞同来自:
wstorm
赞同来自:
这是mapping结构,
{"igf": {
"mappings": {
"invoice": {
"_timestamp": {
"enabled": true
},
"properties": {
"HEADER": {
"properties": {
"APPROVALNUMBER": {
"type": "string",
"index": "not_analyzed"
},
"BRANCHSUPPLIERCODE": {
"type": "string"
},
"BRANCHSUPPLIERCODE1": {
"type": "string"
},
"CONTRACTNUMBER": {
"type": "string",
"index": "not_analyzed"
},
"CORPORATESUPPLIERCODE": {
"type": "string",
"index": "not_analyzed"
},
"DEALERACCOUNTID": {
"type": "string"
},
"DEALERCODE": {
"type": "string",
"index": "not_analyzed"
},
"FINANCIER": {
"type": "string",
"index": "not_analyzed"
},
"INVOICEDATE": {
"type": "date",
"format": "strict_date_optional_time||epoch_millis"
},
"INVOICENUMBER": {
"type": "string",
"index": "not_analyzed"
},
"INVOICETYPE": {
"type": "string",
"index": "not_analyzed"
},
"MACHINENUMBER": {
"type": "string",
"index": "not_analyzed"
},
"ORDERNUMBER": {
"type": "string",
"index": "not_analyzed"
},
"PONUMBER": {
"type": "string",
"index": "not_analyzed"
}
}
},
"INVOICEID": {
"type": "string",
"index": "not_analyzed"
}
}
}
}
}}
-------------------------------------
"BRANCHSUPPLIERCODE": {
"type": "string"
}, 这个自动加上去的, 因为我新的数据增加了BRANCHSUPPLIERCODE这个字段, 我注意到它没有定义index,
其他字段是这样的,例如:
"PONUMBER": {
"type": "string",
"index": "not_analyzed"
}
我觉得可能没有index就默认成no了,
有没有什么办法可以让自动加上的新字段的mapping带上这个呢 ? "index": "not_analyzed"
谢谢