Elasticsearch에서 yyyy/MM/dd HH:mm:ss 문자를 날짜 형식으로 구문 분석하고 싶습니다.
4695 단어 Elasticsearch키바나
어려움
"yyyy/MM/dd HH: mm:ss"형식의 문자를 인덱스 템플릿에서 Date로 구문 분석하면 오류가 발생했습니다.
※ HH : mm 사이에 반각은 말해서 죄송합니다 · 이모티콘이되는 것으로
【인덱스 템플릿】
PUT _template/template_1
{
"index_patterns": ["te*", "bar*"],
"settings": {
"number_of_shards": 1
},
"mappings": {
"_doc": {
"properties": {
"sysdate": {
"type": "date"
}
}
}
}
}
【인덱스 등록】
PUT test_index/_doc/1
{
"sysdate":"2019/01/21 23:00"
}
【오류】
"reason": "Invalid format: \"2019/01/21 23:00\" is malformed at \"/01/21 23:00\""
흠 인덱스 템플릿에 format을 추가하면 좋을까
Elasticsearch Reference [6.5] format
"sysdate": {
"type": "date",
"format": "yyyy/MM/dd HH:mm:ss"
}
오류 상황은 변경되지 않았습니다. 아래 형식을 변경해도 변경되지 않았습니다.
"format": "yyyy/MM/dd' 'HH:mm:ss"
"format": "yyyy/MM/ddTHH:mm:ss"
아래의 자료나 Elasticsearch의 format을 읽었더니 「YYYY/MM/DD」의 형태 밖에 대응하고 있지・・・
Elasticsearch 선배로 날짜를 터치하고 싶습니다.
대응 방법
아래와 같은 고민을 품고 있는 기사를 발견했다
Failed to parse date field yyyy/MM/dd HH: mm:ss SOLVED
절차는 다음과 같습니다.
① ingest, pipeline, gsub를 사용하여 "/"⇨ "-", "반각 공간"⇨ "T"로 변환
「yyyy/MM/ddTHH: mm:ss」→「yyyy-MM-ddTHH: mm:ss」
Gsub Processor
②format에 「date_time_no_millis」를 사용해 퍼스한다
【ingest·pipeline·gsub】
gsub 를 복수 기재하려면 하기를 참고로 했다
Elastic Ingest with multiple grok processors
PUT _ingest/pipeline/test_pipeline
{
"description" : "test pipeline",
"processors" : [
{
"gsub" : {
"field": "sysdate",
"pattern": "/",
"replacement": "-",
"ignore_missing":true
}
},
{
"gsub" : {
"field": "sysdate",
"pattern": " ",
"replacement": "T",
"ignore_missing":true
}
}
]
}
【인덱스 템플릿】
PUT _template/template_1
{
"index_patterns": ["te*", "bar*"],
"settings": {
"number_of_shards": 1
},
"mappings": {
"_doc": {
"properties": {
"sysdate": {
"type": "date",
"format": "date_time_no_millis"
}
}
}
}
}
【인덱스 등록】
"?pipeline="에서 pipeline 설정
PUT test_index/_doc/1?pipeline=test_pipeline
{
"sysdate":"2019/01/21 23:00"
}
【결과】
잘 갔다! !
{
"_index" : "test_index",
"_type" : "_doc",
"_id" : "1",
"_version" : 1,
"result" : "created",
"_shards" : {
"total" : 2,
"successful" : 1,
"failed" : 0
},
"_seq_no" : 0,
"_primary_term" : 1
}
끝에
gsub는 if를 사용할 수 있습니다.
Conditional Execution in Pipelines
gsub는 pattern.matcher하고 replaceAll합니까?
G스 bP 여과접촉 r. 자바
Reference
이 문제에 관하여(Elasticsearch에서 yyyy/MM/dd HH:mm:ss 문자를 날짜 형식으로 구문 분석하고 싶습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/take333/items/28c2dcfff43adebe6a31
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
PUT _template/template_1
{
"index_patterns": ["te*", "bar*"],
"settings": {
"number_of_shards": 1
},
"mappings": {
"_doc": {
"properties": {
"sysdate": {
"type": "date"
}
}
}
}
}
PUT test_index/_doc/1
{
"sysdate":"2019/01/21 23:00"
}
"reason": "Invalid format: \"2019/01/21 23:00\" is malformed at \"/01/21 23:00\""
"sysdate": {
"type": "date",
"format": "yyyy/MM/dd HH:mm:ss"
}
"format": "yyyy/MM/dd' 'HH:mm:ss"
"format": "yyyy/MM/ddTHH:mm:ss"
아래와 같은 고민을 품고 있는 기사를 발견했다
Failed to parse date field yyyy/MM/dd HH: mm:ss SOLVED
절차는 다음과 같습니다.
① ingest, pipeline, gsub를 사용하여 "/"⇨ "-", "반각 공간"⇨ "T"로 변환
「yyyy/MM/ddTHH: mm:ss」→「yyyy-MM-ddTHH: mm:ss」
Gsub Processor
②format에 「date_time_no_millis」를 사용해 퍼스한다
【ingest·pipeline·gsub】
gsub 를 복수 기재하려면 하기를 참고로 했다
Elastic Ingest with multiple grok processors
PUT _ingest/pipeline/test_pipeline
{
"description" : "test pipeline",
"processors" : [
{
"gsub" : {
"field": "sysdate",
"pattern": "/",
"replacement": "-",
"ignore_missing":true
}
},
{
"gsub" : {
"field": "sysdate",
"pattern": " ",
"replacement": "T",
"ignore_missing":true
}
}
]
}
【인덱스 템플릿】
PUT _template/template_1
{
"index_patterns": ["te*", "bar*"],
"settings": {
"number_of_shards": 1
},
"mappings": {
"_doc": {
"properties": {
"sysdate": {
"type": "date",
"format": "date_time_no_millis"
}
}
}
}
}
【인덱스 등록】
"?pipeline="에서 pipeline 설정
PUT test_index/_doc/1?pipeline=test_pipeline
{
"sysdate":"2019/01/21 23:00"
}
【결과】
잘 갔다! !
{
"_index" : "test_index",
"_type" : "_doc",
"_id" : "1",
"_version" : 1,
"result" : "created",
"_shards" : {
"total" : 2,
"successful" : 1,
"failed" : 0
},
"_seq_no" : 0,
"_primary_term" : 1
}
끝에
gsub는 if를 사용할 수 있습니다.
Conditional Execution in Pipelines
gsub는 pattern.matcher하고 replaceAll합니까?
G스 bP 여과접촉 r. 자바
Reference
이 문제에 관하여(Elasticsearch에서 yyyy/MM/dd HH:mm:ss 문자를 날짜 형식으로 구문 분석하고 싶습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/take333/items/28c2dcfff43adebe6a31
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(Elasticsearch에서 yyyy/MM/dd HH:mm:ss 문자를 날짜 형식으로 구문 분석하고 싶습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/take333/items/28c2dcfff43adebe6a31텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)