Elasticsearch 日期查询。特定月份出生的人
Elasticsearch date query. People who were born in a certain month
我有一个具有以下映射的字段:
birthdate: { type: :date, format: :dateOptionalTime }
- 我需要找到所有出生在五月(包括所有年份)的人
- 另一个查询是查找所有出生于 'August 25'(包括所有年份)
的人
查询的内容是什么?
第一个问题:
POST /test_index/_search
{
"query": {
"filtered": {
"filter": {
"range": {
"birthdate": {
"gte": "2015-05-01",
"lt": "2015-06-01"
}
}
}
}
}
}
第二个问题:
POST /test_index/_search
{
"query": {
"filtered": {
"filter": {
"range": {
"birthdate": {
"gte": "2015-08-25",
"lte": "2015-08-25"
}
}
}
}
}
}
这是我用来测试它的代码:
http://sense.qbox.io/gist/36c800cabbe4143ecf72144d02e58e267c1e761a
您可以通过 script
filter
任何一年五月出生的所有人:
{
"query": {
"filtered": {
"filter": {
"script": {
"script": "doc.birthdate.date.monthOfYear == 5"
}
}
}
}
}
8 月 25 日(任何年份)出生的所有人
{
"query": {
"filtered": {
"filter": {
"script": {
"script": "doc.birthdate.date.monthOfYear == 8 && doc.birthdate.date.dayOfMonth == 25"
}
}
}
}
}
GET index_name/doc_type/_search
{
"query": {
"bool" : {
"filter" : {
"script" : {
"script" : {
"source": "doc.field_name.date.getMonthOfYear() == month_number",
"lang": "painless"
}
}
}
}
}
}
只是为了存档,ES 7 带来了一些制动变化 https://www.elastic.co/guide/en/elasticsearch//reference/current/breaking-changes-7.0.html#_getdate_and_getdates_removed
现在是:
POST /people/_search?size=50
{
"query": {
"bool" : {
"filter" : {
"script" : {
"script" : {
"source": "doc['jour'].value.getMonthValue() == 5",
"lang": "painless"
}
}
}
}
}
}
我有一个具有以下映射的字段:
birthdate: { type: :date, format: :dateOptionalTime }
- 我需要找到所有出生在五月(包括所有年份)的人
- 另一个查询是查找所有出生于 'August 25'(包括所有年份) 的人
查询的内容是什么?
第一个问题:
POST /test_index/_search
{
"query": {
"filtered": {
"filter": {
"range": {
"birthdate": {
"gte": "2015-05-01",
"lt": "2015-06-01"
}
}
}
}
}
}
第二个问题:
POST /test_index/_search
{
"query": {
"filtered": {
"filter": {
"range": {
"birthdate": {
"gte": "2015-08-25",
"lte": "2015-08-25"
}
}
}
}
}
}
这是我用来测试它的代码:
http://sense.qbox.io/gist/36c800cabbe4143ecf72144d02e58e267c1e761a
您可以通过 script
filter
任何一年五月出生的所有人:
{
"query": {
"filtered": {
"filter": {
"script": {
"script": "doc.birthdate.date.monthOfYear == 5"
}
}
}
}
}
8 月 25 日(任何年份)出生的所有人
{
"query": {
"filtered": {
"filter": {
"script": {
"script": "doc.birthdate.date.monthOfYear == 8 && doc.birthdate.date.dayOfMonth == 25"
}
}
}
}
}
GET index_name/doc_type/_search
{
"query": {
"bool" : {
"filter" : {
"script" : {
"script" : {
"source": "doc.field_name.date.getMonthOfYear() == month_number",
"lang": "painless"
}
}
}
}
}
}
只是为了存档,ES 7 带来了一些制动变化 https://www.elastic.co/guide/en/elasticsearch//reference/current/breaking-changes-7.0.html#_getdate_and_getdates_removed
现在是:
POST /people/_search?size=50
{
"query": {
"bool" : {
"filter" : {
"script" : {
"script" : {
"source": "doc['jour'].value.getMonthValue() == 5",
"lang": "painless"
}
}
}
}
}
}