我试图在ElasticSearch中对日期字段实现部分搜索。例如,如果startdate存储为“2019-08-28”,我应该能够在查询“2019”或“2019-08”或“2019-0”时检索到相同的数据。
对于其他领域,我是这样做的:
{
"simple_query_string": {
"fields": [
"customer"
],
"query": "* Andrew *",
"analyze_wildcard": "true",
"default_operator": "AND"
}}
这对文本字段非常有效,但对日期字段不起作用。
这是Map:{“mappings”:{“properties”:{“startdate”:{“type”:“date”}}
有什么方法可以实现这一点,是改变Map还是其他查询方法?另外,我发现这个讨论与elastic中的部分日期有关,不确定是否有多大关系,但这里是:
https://github.com/elastic/elasticsearch/issues/45284
1条答案
按热度按时间b1uwtaje1#
摘自es文档
在内部,日期将转换为utc(如果指定了时区),并存储为表示自epoch以来的毫秒数。
我们不可能像在文本字段上那样进行搜索。但是,我们可以告诉es将日期字段索引为日期和文本
多类型索引日期字段:
使用通配符查询进行搜索:如果需要,您甚至可以在索引时使用n-grams进行更快的搜索。