chomp_hits function

Hits to data.tables

Hits to data.tables

A function for converting Elasticsearch docs into R data.tables. It uses fromJSON with flatten = TRUE to convert a JSON into an R data.frame, and formats it into a data.table.

chomp_hits(hits_json = NULL, keep_nested_data_cols = TRUE)

Arguments

  • hits_json: A character vector. If its length is greater than 1, its elements will be pasted together. This can contain a JSON returned from a search query in Elasticsearch, or a filepath or URL pointing at one.
  • keep_nested_data_cols: a boolean (default TRUE); whether to keep columns that are nested arrays in the original JSON. A warning will be given if these columns are deleted.

Examples

# A sample raw result from a hits query: result <- '[{"_source":{"timestamp":"2017-01-01","cust_name":"Austin","details":{ "cust_class":"big_spender","location":"chicago","pastPurchases":[{"film":"The Notebook", "pmt_amount":6.25},{"film":"The Town","pmt_amount":8.00},{"film":"Zootopia","pmt_amount":7.50, "matinee":true}]}}},{"_source":{"timestamp":"2017-02-02","cust_name":"James","details":{ "cust_class":"peasant","location":"chicago","pastPurchases":[{"film":"Minions", "pmt_amount":6.25,"matinee":true},{"film":"Rogue One","pmt_amount":10.25},{"film":"Bridesmaids", "pmt_amount":8.75},{"film":"Bridesmaids","pmt_amount":6.25,"matinee":true}]}}},{"_source":{ "timestamp":"2017-03-03","cust_name":"Nick","details":{"cust_class":"critic","location":"cannes", "pastPurchases":[{"film":"Aala Kaf Ifrit","pmt_amount":0,"matinee":true},{ "film":"Dopo la guerra (Apres la Guerre)","pmt_amount":0,"matinee":true},{ "film":"Avengers: Infinity War","pmt_amount":12.75}]}}}]' # Chomp into a data.table sampleChompedDT <- chomp_hits(hits_json = result, keep_nested_data_cols = TRUE) print(sampleChompedDT) # (Note: use es_search() to get here in one step) # Unpack by details.pastPurchases unpackedDT <- unpack_nested_data(chomped_df = sampleChompedDT , col_to_unpack = "details.pastPurchases") print(unpackedDT)
  • Maintainer: James Lamb
  • License: BSD_3_clause + file LICENSE
  • Last published: 2025-02-24