繁体   English   中英

在弹性搜索中搜索月份和日期

[英]Search for Month and Day in elastic search

弹性搜索新手,请帮忙。
我的日期映射如下

{'mappings': {'properties':{
            'Reference': {'fields': {'keyword': {'ignore_above': 100,'type': 'keyword'}},'type': 'text'},
            'refdate':{'type': 'date','format':'yyyy-MM-dd'}}}

如何搜索“”和“”,例如搜索refdate为 02-21( 2 月 22 日,与年份无关)的所有“参考”

尝试以下查询,但出现错误

"query": {
    "bool" : {
        "filter" : {
            "script" : {
                "script" : {
                    "source": "doc['refdate'].date.getMonthValue() == 02 && doc['refdate'].date.getDayOfMonth() == 21",
                    "lang": "painless"
                }
            }
        }
    }
}

RequestError: RequestError(400, 'search_phase_execution_exception', 'runtime error')

下面的查询正在工作

qry = {"query": {
    "bool" : {
        "filter" : {
            "script" : {
                "script" : {
                    "source": "doc['refdate'].value.getMonthValue() == 02 && doc['refdate'].value.getDayOfMonth() == 21",
                    "lang": "painless"
                }
            }
        }
    }
}}

es.search(index='indexName', body=qry, size=100)

如文档中所述

long 和 date 类型的字段具有getDate()getDates()方法(用于多值字段),以获取 object 以及当前文档值的特定于日期的辅助方法。 在 5.3.0 中,更改日期字段以在调用doc["myfield"].value时直接公开相同的日期 object,并且不推荐使用日期对象的 getter 方法。 这些方法现在已被删除(从 7.0 开始)。 相反,在日期字段上使用.value ,或使用Instance.ofEpochMillis(doc["myfield"].value)将长字段显式解析为日期 object 。

请参阅此处如何提取日、年、月等。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM