上下文示例数据编辑

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

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

theatre (keyword)
剧院的名称。
play (keyword)
戏剧的名称。
actors (keyword)
戏剧中的演员列表。
date (keyword)
戏剧日期,作为关键字。
time (keyword)
戏剧时间,作为关键字。
cost (long)
座位票价。
row (long)
座位的排号。
number (long)
座位在排中的编号。
sold (boolean)
座位是否已售出。
datetime (date)
戏剧日期和时间,作为日期对象。

先决条件编辑

启动一个 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}