【发布时间】:2015-07-06 20:31:14
【问题描述】:
我正在将 elasticsearch 集成到我们正在构建的应用程序中。我遇到了嵌套查询和过滤器的问题。这是我们的映射示例:
"index": {
"mappings": {
"users": {
"properties": {
"membership": {
"type": "nested",
"properties": {
"membership": {
"type": "string"
},
"start date": {
"type": "date"
},
"end date date": {
"type": "date"
}
}
}
}
}
}
}
现在,我想查找所有具有“membership”“foo bar”的用户,没有结束日期。问题是当我使用标准分析器时,“foo bar”在索引中被分成两个单词,所以我不能使用术语过滤器来查找“foo bar”。我们可以通过使用不同的分析器来解决这个问题,但这还有其他缺点,比如大小写问题等。
此外:使用查询而不是过滤器很容易找到拥有“foo bar”成员资格的每个人。问题是没有查询可以找到“结束日期”=缺失的嵌套文档。有一个过滤器,但我似乎无法在同一个嵌套文档中将查询“membership”=“foo bar”与过滤器“end date”=missing 结合起来。
所以,我可以找到“结束日期”= 失踪的每个人,并且我可以找到所有会员资格“foo bar”的人,但不是每个没有结束日期的人,特别是会员资格“foo bar”。
对于如何解决这个问题有什么建议吗?
【问题讨论】:
标签: elasticsearch nested