Я пытаюсь запросить документы, содержащие даты в теле поля "контент".
curl -XGET 'http://localhost:9200/index/_search' -d '{
"query": {
"regexp": {
"content": "^(0[1-9]|[12][0-9]|3[01])[- /.](0[1-9]|1[012])[- /.]((19|20)\\d\\d)$"
}
}
}'
Как можно ближе?
curl -XGET 'http://localhost:9200/index/_search' -d '{
"filtered": {
"query": {
"match_all": {}
},
"filter": {
"regexp":{
"content" : "^(0[1-9]|[12][0-9]|3[01])[- /.](0[1-9]|1[012])[- /.]((19|20)\\d\\d)$"
}
}
}
}'
Мое регулярное выражение, похоже, отключено. Это регулярное выражение проверено на regex101.com. Следующий запрос по-прежнему ничего не возвращает из документов 175k, которые у меня есть.
curl -XPOST 'http://localhost:9200/index/_search?pretty=true' -d '{
"query": {
"regexp":{
"content" : "/[0-9]{4}-[0-9]{2}-[0-9]{2}|[0-9]{2}-[0-9]{2}-[0-9]{4}|[0-9]{2}/[0-9]{2}/[0-9]{4}|[0-9]{4}/[0-9]{2}/[0-9]{2}/g"
}
}
}'
Я начинаю думать, что мой индекс не может быть настроен для такого запроса. Какой тип поля вы должны использовать, чтобы иметь возможность использовать регулярные выражения?
mappings: {
doc: {
properties: {
content: {
type: string
}title: {
type: string
}host: {
type: string
}cache: {
type: string
}segment: {
type: string
}query: {
properties: {
match_all: {
type: object
}
}
}digest: {
type: string
}boost: {
type: string
}tstamp: {
format: dateOptionalTimetype: date
}url: {
type: string
}fields: {
type: string
}anchor: {
type: string
}
}
}
Я хочу найти любую запись, у которой есть дата и график объема документов к этой дате. Шаг 1. должен заставить этот запрос работать. Шаг 2. будет вытягивать даты и группировать их соответственно. Может кто-то предложить способ, чтобы первая часть работала, поскольку я знаю, что вторая часть будет действительно сложной.
Спасибо!