A method comprising: receiving a plurality of data records (508, 512, 516, 532, 536, 540) in a data stream; partitioning the plurality of data records (508, 512, 516, 532, 536, 540) into a plurality of batches (504, 506) comprising (a) a first batch of data records (508, 512, 516) and (b) a second batch of data records (532, 536, 540); processing the first batch at least by: identifying a first plurality of fields corresponding to the first batch, the first plurality of fields comprising a particular field; analyzing a first set of values, associated with the particular field, in the first batch to determine a first inferred set of one or more field types corresponding to the particular field; indexing the first set of values in association with (a) the particular field and (b) a respective inferred field type of the first inferred set of field types; processing the second batch at least by: identifying a second plurality of fields corresponding to the second batch, the second plurality of fields comprising the same particular field comprised in the first plurality of fields; analyzing a second set of values, associated with the particular field, in the second batch to determine a second inferred set of one or more field types corresponding to the particular field; and indexing the second set of values in association with (a) the particular field and (b) a respective inferred field type of the second inferred set of field types; and transmitting the first and second batches (504, 506) of data records (508, 512, 516, 532, 536, 540), and corresponding index data generated by said indexing, to a data storage system for storage and subsequent querying. receiving a plurality of data records (508, 512, 516, 532, 536, 540) in a data stream; partitioning the plurality of data records (508, 512, 516, 532, 536, 540) into a plurality of batches (504, 506) comprising (a) a first batch of data records (508, 512, 516) and (b) a second batch of data records (532, 536, 540); processing the first batch at least by: identifying a first plurality of fields corresponding to the first batch, the first plurality of fields comprising a particular field; analyzing a first set of values, associated with the particular field, in the first batch to determine a first inferred set of one or more field types corresponding to the particular field; indexing the first set of values in association with (a) the particular field and (b) a respective inferred field type of the first inferred set of field types; identifying a first plurality of fields corresponding to the first batch, the first plurality of fields comprising a particular field; analyzing a first set of values, associated with the particular field, in the first batch to determine a first inferred set of one or more field types corresponding to the particular field; indexing the first set of values in association with (a) the particular field and (b) a respective inferred field type of the first inferred set of field types; processing the second batch at least by: identifying a second plurality of fields corresponding to the second batch, the second plurality of fields comprising the same particular field comprised in the first plurality of fields; analyzing a second set of values, associated with the particular field, in the second batch to determine a second inferred set of one or more field types corresponding to the particular field; and indexing the second set of values in association with (a) the particular field and (b) a respective inferred field type of the second inferred set of field types; and identifying a second plurality of fields corresponding to the second batch, the second plurality of fields comprising the same particular field comprised in the first plurality of fields; analyzing a second set of values, associated with the particular field, in the second batch to determine a second inferred set of one or more field types corresponding to the particular field; and indexing the second set of values in association with (a) the particular field and (b) a respective inferred field type of the second inferred set of field types; and transmitting the first and second batches (504, 506) of data records (508, 512, 516, 532, 536, 540), and corresponding index data generated by said indexing, to a data storage system for storage and subsequent querying.