我试图从名为text的字符串字段中检索1933年到1949年之间的年份。但是,我似乎无法找到工作范围查询。到目前为止我试图崩溃的事情:
{"query":
{"query_string":
{
"text": [1933 TO 1949]
}
}
}
我也尝试过这样:
{"query":
{"filtered":
{"query":{"match_all":{}},
"filter":{"range":{"text":[1933 TO 1949]}
}
}
}
但它仍然崩溃。
示例文本字段如下所示,其中包含对1933年的提及:
“PrimeraDivisión1933(Argentinië),seizoen in de Argentijnse voetbalcompetitie \ n *PrimeraDivisión1933(Chili),seizoen in de Chileense voetbalcompetitie \ n *PrimeraDivisión1933(Uruguay),seizoen in de Uruguayaanse voetbalcompetitie \ n \ n“
但是,我也有不包含任何年份的文件,我想过滤所有文件,只保留在给定时期内提到年份的文件。我在这里阅读http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/query-dsl-query-string-query.html,范围查询也可以应用于文本字段,我不想使用任何中间解决方案来识别文本中的日期。
我基本上想要实现的是能够获得与使用搜索URI查询时相同的结果:
urltomyindex/_search?q=text:%7B1933%20TO%201949%7D%27
完美无缺。 是否仍有可能实现我的目标?任何帮助非常感谢!
答案 0 :(得分:0)
这应该这样做:
GET index1/type1/_search
{
"query": {
"filtered": {
"filter": {
"terms": {
"fieldNameHere": [
"1933",
"1934",
"1935",
"1936",
"1937",
"1938",
"1939",
"1940",
"1941",
"1942",
"1943",
"1944",
"1945",
"1946",
"1947",
"1948",
"1949"
]
}
}
}
}
}
如果您知道自己经常需要这种搜索,那么创建一个新的字段“yearPublished”或类似的东西会更好,这样您就可以将其作为数字与文本字段进行搜索。