- Painless Scripting Language: other versions:
- Painless Guide
- Painless Language Specification
- Painless contexts
- Context example data
- Runtime fields context
- Ingest processor context
- Update context
- Update by query context
- Reindex context
- Sort context
- Similarity context
- Weight context
- Score context
- Field context
- Filter context
- Minimum should match context
- Metric aggregation initialization context
- Metric aggregation map context
- Metric aggregation combine context
- Metric aggregation reduce context
- Bucket script aggregation context
- Bucket selector aggregation context
- Analysis Predicate Context
- Watcher condition context
- Watcher transform context
- Painless API Reference
- Shared API
- Aggregation Selector API
- Aggs API
- Aggs Combine API
- Aggs Init API
- Aggs Map API
- Aggs Reduce API
- Analysis API
- Bucket Aggregation API
- Field API
- Filter API
- Ingest API
- Interval API
- Moving Function API
- Number Sort API
- Painless Test API
- Processor Conditional API
- Score API
- Script Heuristic API
- Similarity API
- Similarity Weight API
- String Sort API
- Template API
- Terms Set API
- Update API
- Watcher Condition API
- Watcher Transform API
- Xpack Template API
IMPORTANT: No additional bug fixes or documentation updates
will be released for this version. For the latest information, see the
current release documentation.
Context example data
editContext example data
editComplete the following steps to index the seat
sample data into Elasticsearch. You can
run any of the context examples against this sample data after you configure it.
Each document in the seat
data contains the following fields:
-
theatre
(keyword
) - The name of the theater the play is in.
-
play
(keyword
) - The name of the play.
-
actors
(keyword
) - A list of actors in the play.
-
date
(keyword
) - The date of the play as a keyword.
-
time
(keyword
) - The time of the play as a keyword.
-
cost
(long
) - The cost of the ticket for the seat.
-
row
(long
) - The row of the seat.
-
number
(long
) - The number of the seat within a row.
-
sold
(boolean
) - Whether or not the seat is sold.
-
datetime
(date
) - The date and time of the play as a date object.
Prerequisites
editStart an Elasticsearch instance, and then access the Console in Kibana.
Configure the seat
sample data
edit-
From the Kibana Console, create mappings for the sample data:
PUT /seats { "mappings": { "properties": { "theatre": { "type": "keyword" }, "play": { "type": "keyword" }, "actors": { "type": "keyword" }, "date": { "type": "keyword" }, "time": { "type": "keyword" }, "cost": { "type": "double" }, "row": { "type": "integer" }, "number": { "type": "integer" }, "sold": { "type": "boolean" }, "datetime": { "type": "date" } } } }
-
Configure a script ingest processor that parses each document as Elasticsearch ingests the
seat
data. The following ingest script processes thedate
andtime
fields and stores the result in adatetime
field:PUT /_ingest/pipeline/seats { "description": "update datetime for seats", "processors": [ { "script": { "source": "String[] dateSplit = ctx.date.splitOnToken('-'); String year = dateSplit[0].trim(); String month = dateSplit[1].trim(); if (month.length() == 1) { month = '0' + month; } String day = dateSplit[2].trim(); if (day.length() == 1) { day = '0' + day; } boolean pm = ctx.time.substring(ctx.time.length() - 2).equals('PM'); String[] timeSplit = ctx.time.substring(0, ctx.time.length() - 2).splitOnToken(':'); int hours = Integer.parseInt(timeSplit[0].trim()); int minutes = Integer.parseInt(timeSplit[1].trim()); if (pm) { hours += 12; } String dts = year + '-' + month + '-' + day + 'T' + (hours < 10 ? '0' + hours : '' + hours) + ':' + (minutes < 10 ? '0' + minutes : '' + minutes) + ':00+08:00'; ZonedDateTime dt = ZonedDateTime.parse(dts, DateTimeFormatter.ISO_OFFSET_DATE_TIME); ctx.datetime = dt.getLong(ChronoField.INSTANT_SECONDS)*1000L;" } } ] }
-
Ingest some sample data using the
seats
ingest pipeline that you defined in the previous step.POST seats/_bulk?pipeline=seats&refresh=true {"create":{"_index":"seats","_id":"1"}} {"theatre":"Skyline","play":"Rent","actors":["James Holland","Krissy Smith","Joe Muir","Ryan Earns"],"date":"2021-4-1","time":"3:00PM","cost":37,"row":1,"number":7,"sold":false} {"create":{"_index":"seats","_id":"2"}} {"theatre":"Graye","play":"Rent","actors":["Dave Christmas"],"date":"2021-4-1","time":"3:00PM","cost":30,"row":3,"number":5,"sold":false} {"create":{"_index":"seats","_id":"3"}} {"theatre":"Graye","play":"Rented","actors":["Dave Christmas"],"date":"2021-4-1","time":"3:00PM","cost":33,"row":2,"number":6,"sold":false} {"create":{"_index":"seats","_id":"4"}} {"theatre":"Skyline","play":"Rented","actors":["James Holland","Krissy Smith","Joe Muir","Ryan Earns"],"date":"2021-4-1","time":"3:00PM","cost":20,"row":5,"number":2,"sold":false} {"create":{"_index":"seats","_id":"5"}} {"theatre":"Down Port","play":"Pick It Up","actors":["Joel Madigan","Jessica Brown","Baz Knight","Jo Hangum","Rachel Grass","Phoebe Miller"],"date":"2018-4-2","time":"8:00PM","cost":27.5,"row":3,"number":2,"sold":false} {"create":{"_index":"seats","_id":"6"}} {"theatre":"Down Port","play":"Harriot","actors":["Phoebe Miller","Sarah Notch","Brayden Green","Joshua Iller","Jon Hittle","Rob Kettleman","Laura Conrad","Simon Hower","Nora Blue","Mike Candlestick","Jacey Bell"],"date":"2018-8-7","time":"8:00PM","cost":30,"row":1,"number":10,"sold":false} {"create":{"_index":"seats","_id":"7"}} {"theatre":"Skyline","play":"Auntie Jo","actors":["Jo Hangum","Jon Hittle","Rob Kettleman","Laura Conrad","Simon Hower","Nora Blue"],"date":"2018-10-2","time":"5:40PM","cost":22.5,"row":7,"number":10,"sold":false} {"create":{"_index":"seats","_id":"8"}} {"theatre":"Skyline","play":"Test Run","actors":["Joe Muir","Ryan Earns","Joel Madigan","Jessica Brown"],"date":"2018-8-5","time":"7:30PM","cost":17.5,"row":11,"number":12,"sold":true} {"create":{"_index":"seats","_id":"9"}} {"theatre":"Skyline","play":"Sunnyside Down","actors":["Krissy Smith","Joe Muir","Ryan Earns","Nora Blue","Mike Candlestick","Jacey Bell"],"date":"2018-6-12","time":"4:00PM","cost":21.25,"row":8,"number":15,"sold":true} {"create":{"_index":"seats","_id":"10"}} {"theatre":"Graye","play":"Line and Single","actors":["Nora Blue","Mike Candlestick"],"date":"2018-6-5","time":"2:00PM","cost":30,"row":1,"number":2,"sold":false} {"create":{"_index":"seats","_id":"11"}} {"theatre":"Graye","play":"Hamilton","actors":["Lin-Manuel Miranda","Leslie Odom Jr."],"date":"2018-6-5","time":"2:00PM","cost":5000,"row":1,"number":20,"sold":true}
On this page
Was this helpful?
Thank you for your feedback.