上下文示例数据

编辑

完成以下步骤,将 seat 示例数据索引到 Elasticsearch 中。配置完成后,您可以针对此示例数据运行任何上下文示例。

seat 数据中的每个文档都包含以下字段

theatrekeyword
剧院的名称。
playkeyword
剧目的名称。
actorskeyword
剧目中的演员列表。
datekeyword
剧目日期,为关键字类型。
timekeyword
剧目时间,为关键字类型。
costlong
座位票的价格。
rowlong
座位的行号。
numberlong
座位在行内的编号。
soldboolean
座位是否已售出。
datetimedate
剧目的日期和时间,为日期对象。

先决条件

编辑

启动一个 Elasticsearch 实例,然后在 Kibana 中访问 控制台

配置 seat 示例数据

编辑
  1. 从 Kibana 控制台中,为示例数据创建 映射

    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"    }
        }
      }
    }
  2. 配置一个脚本摄取处理器,在 Elasticsearch 摄取 seat 数据时解析每个文档。以下摄取脚本处理 datetime 字段,并将结果存储在 datetime 字段中

    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;"
          }
        }
      ]
    }
  3. 使用您在上一步中定义的 seats 摄取管道摄取一些示例数据。

    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}