CloudSearch - 当字段不存在时返回结果

时间:2015-03-03 17:14:57

标签: amazon-web-services amazon-cloudsearch

是否存在CloudSearch结构化查询以返回字段中没有值的结果?例如,我有一个名为target_date的字段,它并不总是有值,我希望返回没有target_date的所有结果。该字段不为零或者设置为默认值;对于没有日期的物品,它根本不存在。

还有另一种情况。我需要在target_date之后返回所有结果并包含没有现有日期的任何结果。我使用的结构化查询是target_date:['2000-03-03T00:00:00Z',}。查找不存在日期的查询应与and运算符一起使用,例如:(and target_date:['2000-03-03T00:00:00Z',} [QUERY_GOES_HERE])

2 个答案:

答案 0 :(得分:4)

我相信你问的是Amazon Cloudsearch : Filter if exists

总结那里的选项:

  1. 添加一个名为'has_target_date'的新布尔字段
  2. 设置默认target_date(例如1/1/1970)表示它不存在
  3. 黑客:(范围字段= target_date [0,})
  4. 任何这些选项都应该与你问题的QUERY_GOES_HERE部分一起使用。

答案 1 :(得分:1)

您还可以构造一个lonnnng查询,以排除该字段中包含字符串的所有项。基本上你说"给我一些不以A-Z或0-9开头的东西"

在初步测试中,我的结果是完全缺少该字段的所有项目。以下示例代码用于"标题"上的复合(结构化)查询。字段以查找所有没有标题的项目

(and (not (prefix field='title' 'a')) (not (prefix field='title' 'b')) (not (prefix field='title' 'c')) (not (prefix field='title' 'd')) (not (prefix field='title' 'e')) (not (prefix field='title' 'f')) (not (prefix field='title' 'g')) (not (prefix field='title' 'h')) (not (prefix field='title' 'i')) (not (prefix field='title' 'j')) (not (prefix field='title' 'k')) (not (prefix field='title' 'l')) (not (prefix field='title' 'm')) (not (prefix field='title' 'n')) (not (prefix field='title' 'o')) (not (prefix field='title' 'p')) (not (prefix field='title' 'q')) (not (prefix field='title' 'r')) (not (prefix field='title' 's')) (not (prefix field='title' 't')) (not (prefix field='title' 'u')) (not (prefix field='title' 'v')) (not (prefix field='title' 'w')) (not (prefix field='title' 'x')) (not (prefix field='title' 'y')) (not (prefix field='title' 'z')) (not (prefix field='title' '1')) (not (prefix field='title' '2')) (not (prefix field='title' '3')) (not (prefix field='title' '4')) (not (prefix field='title' '5')) (not (prefix field='title' '6')) (not (prefix field='title' '7')) (not (prefix field='title' '8')) (not (prefix field='title' '9')) (not (prefix field='title' '0')))