Whether the field exists or not is sort of besides the point though. Here's an example.
Say you have a schema/mapping that uses the volume of an item, so you expect to have a height, a depth, and a width.
{
"id": 1234,
"name": "box",
"height": 4,
"depth": 10,
"width": 4
}
Pretty simple. But now, what happens when you index an item without a height, like say, a piece of paper. You have 2 options, you could leave off the property, of you could set it to 0. (I realize that paper has a height, but just stick with me here...)
{
"id": 456,
"name": "paper",
"width": 8.5,
"depth": 11
}
Now if you query for all items with a depth greater than 1, or with a volume of a certain number, "paper" won't show up. It doesn't matter if you put a value in there or not, paper has no volume either way.
Your situation is basically the same, you have a document that doesn't have a value for a given property, which effectively means that the document can not match when you search/filter on that property. There's logically no difference between it not existing and not having a value in the range you filtered on.
I still think this may just be a problem with the way the documents are being stored though. Knowing more about the specifics of what you are storing might be helpful in helping you find a solution. What is the data, and why would some properties not have a value?