我使用elasticsearch处理带有日期值的字符串字段的数据,如下所示:
“2016-01-25 18:40:18.933”
我试图使用范围筛选器从日期到日期获取值。例如:
"query" : { "filtered" : { "query" : { "range" : { "createdDate" : { "gte": "2015-11-01", "lte": "2016-01-25" } } } } } }
但是结果不包含“createddate”:“2015-12-14 20:28:23.557”
的值
如果使用“gte”:“2015”
或“gte”:“2014-12-31”
,则结果中将包含“createddate”:“2015-12-14”
的值。
我的查询有什么问题?
如果希望能够对日期运行range
查询,则需要将字段映射为date
字段,否则它将无法按预期工作。在您共享的映射中,createddate
是一个字符串
。您需要擦除索引,并使用createddate
字段的正确映射创建一个新索引,如下所示:
curl -XPOST localhost:9200/documents -d '{
"mappings": {
"order": {
"properties": {
"createdDate": {
"type": "date"
}
}
}
}
}'
然后,您可以重新索引您的数据,您的range
查询将按预期工作。
问题内容: 我正在尝试将范围查询与elasticsearch一起使用 但是弹性返回没有结果。我发现系统存在字符串包含或问题 这是该字段的映射: 问题答案:
实现此功能的推荐方法是什么?注意,我使用的是查询字符串查询。
我刚开始做弹性搜索。我想通过子字符串搜索,它由数字和像“/”和“-”这样的符号组成。例如,我使用默认设置和一个索引字段创建索引: 然后,我将一些数据添加到我的索引中: 不返回命中。如果我移除星形符号,那么作为回应,我会看到两个点击:“1/1-35”和“1/2-25”。如果我尝试用反斜杠(“1\/1*”)转义斜杠符号,结果分别是相同的。 当我的查询中有“-”符号时,那么我必须转义这个Lucene特殊
问题内容: 如何从不带破折号的字符串中创建java.util.UUID? 问题答案: Clojure的带 标签文字是对的传递。并且,将其除以“-”并将其转换为两个值。(UUID的格式已标准化为8-4-4-4-12十六进制数字,但“-”实际上仅用于验证和视觉识别。) 直接的解决方案是重新插入“-”并使用。 如果您想要没有正则表达式的内容,则可以使用和。
因此,默认情况下,field1是通过使用默认分析器进行弹性搜索来分析的。 我在下面搜索短语查询,但它没有返回任何结果。 因此弹性搜索短语查询不适合于OR运算符。知道为什么它不起作用吗?它是弹性搜索的一个限制,因为文本中有特殊的字符连字符(-)?
版本字符串有一个支持java类(版本),它实现了Comparable。 我的分析器是一个分析器包装器,它是一个小写和空格分析器,类似于内置的分析器。我使用经典的查询解析器进行搜索。在确切的条件下搜索工作良好。 我想做的是: 我试图在索引之前将版本字符串转换为int,但查询输入需要以某种方式转换,以便在搜索之前将版本字符串转换为int。 看起来我必须为version字段实现一个自定义分析器,但是我在