mirror of
https://github.com/elastic/kibana.git
synced 2025-04-24 17:59:23 -04:00
[Tabify] Add meta option to include top-level underscored field values (#90535)
Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com>
This commit is contained in:
parent
d43547af82
commit
4b3d1bf83c
3 changed files with 305 additions and 5 deletions
|
@ -1,5 +1,113 @@
|
|||
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
||||
|
||||
exports[`tabifyDocs combines meta fields if meta option is set 1`] = `
|
||||
Object {
|
||||
"columns": Array [
|
||||
Object {
|
||||
"id": "fieldTest",
|
||||
"meta": Object {
|
||||
"field": "fieldTest",
|
||||
"index": "test-index",
|
||||
"params": Object {
|
||||
"id": "number",
|
||||
},
|
||||
"type": "number",
|
||||
},
|
||||
"name": "fieldTest",
|
||||
},
|
||||
Object {
|
||||
"id": "invalidMapping",
|
||||
"meta": Object {
|
||||
"field": "invalidMapping",
|
||||
"index": "test-index",
|
||||
"params": undefined,
|
||||
"type": "number",
|
||||
},
|
||||
"name": "invalidMapping",
|
||||
},
|
||||
Object {
|
||||
"id": "nested",
|
||||
"meta": Object {
|
||||
"field": "nested",
|
||||
"index": "test-index",
|
||||
"params": undefined,
|
||||
"type": "object",
|
||||
},
|
||||
"name": "nested",
|
||||
},
|
||||
Object {
|
||||
"id": "sourceTest",
|
||||
"meta": Object {
|
||||
"field": "sourceTest",
|
||||
"index": "test-index",
|
||||
"params": Object {
|
||||
"id": "number",
|
||||
},
|
||||
"type": "number",
|
||||
},
|
||||
"name": "sourceTest",
|
||||
},
|
||||
Object {
|
||||
"id": "_id",
|
||||
"meta": Object {
|
||||
"field": "_id",
|
||||
"index": "test-index",
|
||||
"params": undefined,
|
||||
"type": "string",
|
||||
},
|
||||
"name": "_id",
|
||||
},
|
||||
Object {
|
||||
"id": "_index",
|
||||
"meta": Object {
|
||||
"field": "_index",
|
||||
"index": "test-index",
|
||||
"params": undefined,
|
||||
"type": "string",
|
||||
},
|
||||
"name": "_index",
|
||||
},
|
||||
Object {
|
||||
"id": "_score",
|
||||
"meta": Object {
|
||||
"field": "_score",
|
||||
"index": "test-index",
|
||||
"params": undefined,
|
||||
"type": "number",
|
||||
},
|
||||
"name": "_score",
|
||||
},
|
||||
Object {
|
||||
"id": "_type",
|
||||
"meta": Object {
|
||||
"field": "_type",
|
||||
"index": "test-index",
|
||||
"params": undefined,
|
||||
"type": "string",
|
||||
},
|
||||
"name": "_type",
|
||||
},
|
||||
],
|
||||
"rows": Array [
|
||||
Object {
|
||||
"_id": "hit-id-value",
|
||||
"_index": "hit-index-value",
|
||||
"_score": 77,
|
||||
"_type": "hit-type-value",
|
||||
"fieldTest": 123,
|
||||
"invalidMapping": 345,
|
||||
"nested": Array [
|
||||
Object {
|
||||
"field": 123,
|
||||
},
|
||||
],
|
||||
"sourceTest": 123,
|
||||
},
|
||||
],
|
||||
"type": "datatable",
|
||||
}
|
||||
`;
|
||||
|
||||
exports[`tabifyDocs converts fields by default 1`] = `
|
||||
Object {
|
||||
"columns": Array [
|
||||
|
@ -47,9 +155,53 @@ Object {
|
|||
},
|
||||
"name": "sourceTest",
|
||||
},
|
||||
Object {
|
||||
"id": "_id",
|
||||
"meta": Object {
|
||||
"field": "_id",
|
||||
"index": "test-index",
|
||||
"params": undefined,
|
||||
"type": "string",
|
||||
},
|
||||
"name": "_id",
|
||||
},
|
||||
Object {
|
||||
"id": "_index",
|
||||
"meta": Object {
|
||||
"field": "_index",
|
||||
"index": "test-index",
|
||||
"params": undefined,
|
||||
"type": "string",
|
||||
},
|
||||
"name": "_index",
|
||||
},
|
||||
Object {
|
||||
"id": "_score",
|
||||
"meta": Object {
|
||||
"field": "_score",
|
||||
"index": "test-index",
|
||||
"params": undefined,
|
||||
"type": "number",
|
||||
},
|
||||
"name": "_score",
|
||||
},
|
||||
Object {
|
||||
"id": "_type",
|
||||
"meta": Object {
|
||||
"field": "_type",
|
||||
"index": "test-index",
|
||||
"params": undefined,
|
||||
"type": "string",
|
||||
},
|
||||
"name": "_type",
|
||||
},
|
||||
],
|
||||
"rows": Array [
|
||||
Object {
|
||||
"_id": "hit-id-value",
|
||||
"_index": "hit-index-value",
|
||||
"_score": 77,
|
||||
"_type": "hit-type-value",
|
||||
"fieldTest": 123,
|
||||
"invalidMapping": 345,
|
||||
"nested": Array [
|
||||
|
@ -111,9 +263,53 @@ Object {
|
|||
},
|
||||
"name": "sourceTest",
|
||||
},
|
||||
Object {
|
||||
"id": "_id",
|
||||
"meta": Object {
|
||||
"field": "_id",
|
||||
"index": "test-index",
|
||||
"params": undefined,
|
||||
"type": "string",
|
||||
},
|
||||
"name": "_id",
|
||||
},
|
||||
Object {
|
||||
"id": "_index",
|
||||
"meta": Object {
|
||||
"field": "_index",
|
||||
"index": "test-index",
|
||||
"params": undefined,
|
||||
"type": "string",
|
||||
},
|
||||
"name": "_index",
|
||||
},
|
||||
Object {
|
||||
"id": "_score",
|
||||
"meta": Object {
|
||||
"field": "_score",
|
||||
"index": "test-index",
|
||||
"params": undefined,
|
||||
"type": "number",
|
||||
},
|
||||
"name": "_score",
|
||||
},
|
||||
Object {
|
||||
"id": "_type",
|
||||
"meta": Object {
|
||||
"field": "_type",
|
||||
"index": "test-index",
|
||||
"params": undefined,
|
||||
"type": "string",
|
||||
},
|
||||
"name": "_type",
|
||||
},
|
||||
],
|
||||
"rows": Array [
|
||||
Object {
|
||||
"_id": "hit-id-value",
|
||||
"_index": "hit-index-value",
|
||||
"_score": 77,
|
||||
"_type": "hit-type-value",
|
||||
"fieldTest": 123,
|
||||
"invalidMapping": 345,
|
||||
"nested": Array [
|
||||
|
@ -175,9 +371,53 @@ Object {
|
|||
},
|
||||
"name": "sourceTest",
|
||||
},
|
||||
Object {
|
||||
"id": "_id",
|
||||
"meta": Object {
|
||||
"field": "_id",
|
||||
"index": "test-index",
|
||||
"params": undefined,
|
||||
"type": "string",
|
||||
},
|
||||
"name": "_id",
|
||||
},
|
||||
Object {
|
||||
"id": "_index",
|
||||
"meta": Object {
|
||||
"field": "_index",
|
||||
"index": "test-index",
|
||||
"params": undefined,
|
||||
"type": "string",
|
||||
},
|
||||
"name": "_index",
|
||||
},
|
||||
Object {
|
||||
"id": "_score",
|
||||
"meta": Object {
|
||||
"field": "_score",
|
||||
"index": "test-index",
|
||||
"params": undefined,
|
||||
"type": "number",
|
||||
},
|
||||
"name": "_score",
|
||||
},
|
||||
Object {
|
||||
"id": "_type",
|
||||
"meta": Object {
|
||||
"field": "_type",
|
||||
"index": "test-index",
|
||||
"params": undefined,
|
||||
"type": "string",
|
||||
},
|
||||
"name": "_type",
|
||||
},
|
||||
],
|
||||
"rows": Array [
|
||||
Object {
|
||||
"_id": "hit-id-value",
|
||||
"_index": "hit-index-value",
|
||||
"_score": 77,
|
||||
"_type": "hit-type-value",
|
||||
"fieldTest": 123,
|
||||
"invalidMapping": 345,
|
||||
"nested": Array [
|
||||
|
@ -235,9 +475,53 @@ Object {
|
|||
},
|
||||
"name": "sourceTest",
|
||||
},
|
||||
Object {
|
||||
"id": "_id",
|
||||
"meta": Object {
|
||||
"field": "_id",
|
||||
"index": undefined,
|
||||
"params": undefined,
|
||||
"type": "string",
|
||||
},
|
||||
"name": "_id",
|
||||
},
|
||||
Object {
|
||||
"id": "_index",
|
||||
"meta": Object {
|
||||
"field": "_index",
|
||||
"index": undefined,
|
||||
"params": undefined,
|
||||
"type": "string",
|
||||
},
|
||||
"name": "_index",
|
||||
},
|
||||
Object {
|
||||
"id": "_score",
|
||||
"meta": Object {
|
||||
"field": "_score",
|
||||
"index": undefined,
|
||||
"params": undefined,
|
||||
"type": "number",
|
||||
},
|
||||
"name": "_score",
|
||||
},
|
||||
Object {
|
||||
"id": "_type",
|
||||
"meta": Object {
|
||||
"field": "_type",
|
||||
"index": undefined,
|
||||
"params": undefined,
|
||||
"type": "string",
|
||||
},
|
||||
"name": "_type",
|
||||
},
|
||||
],
|
||||
"rows": Array [
|
||||
Object {
|
||||
"_id": "hit-id-value",
|
||||
"_index": "hit-index-value",
|
||||
"_score": 77,
|
||||
"_type": "hit-type-value",
|
||||
"fieldTest": 123,
|
||||
"invalidMapping": 345,
|
||||
"nested": Array [
|
||||
|
|
|
@ -37,6 +37,10 @@ describe('tabifyDocs', () => {
|
|||
hits: {
|
||||
hits: [
|
||||
{
|
||||
_id: 'hit-id-value',
|
||||
_index: 'hit-index-value',
|
||||
_type: 'hit-type-value',
|
||||
_score: 77,
|
||||
_source: { sourceTest: 123 },
|
||||
fields: { fieldTest: 123, invalidMapping: 345, nested: [{ field: 123 }] },
|
||||
},
|
||||
|
@ -59,6 +63,11 @@ describe('tabifyDocs', () => {
|
|||
expect(table).toMatchSnapshot();
|
||||
});
|
||||
|
||||
it('combines meta fields if meta option is set', () => {
|
||||
const table = tabifyDocs(response, index, { meta: true });
|
||||
expect(table).toMatchSnapshot();
|
||||
});
|
||||
|
||||
it('works without provided index pattern', () => {
|
||||
const table = tabifyDocs(response);
|
||||
expect(table).toMatchSnapshot();
|
||||
|
|
|
@ -11,6 +11,12 @@ import { isPlainObject } from 'lodash';
|
|||
import { IndexPattern } from '../../index_patterns/index_patterns';
|
||||
import { Datatable, DatatableColumn, DatatableColumnType } from '../../../../expressions/common';
|
||||
|
||||
export interface TabifyDocsOptions {
|
||||
shallow?: boolean;
|
||||
source?: boolean;
|
||||
meta?: boolean;
|
||||
}
|
||||
|
||||
export function flattenHit(
|
||||
hit: SearchResponse<unknown>['hits']['hits'][0],
|
||||
indexPattern?: IndexPattern,
|
||||
|
@ -56,12 +62,13 @@ export function flattenHit(
|
|||
if (params?.source !== false && hit._source) {
|
||||
flatten(hit._source as Record<string, any>);
|
||||
}
|
||||
return flat;
|
||||
}
|
||||
if (params?.meta !== false) {
|
||||
// combine the fields that Discover allows to add as columns
|
||||
const { _id, _index, _type, _score } = hit;
|
||||
flatten({ _id, _index, _score, _type });
|
||||
}
|
||||
|
||||
export interface TabifyDocsOptions {
|
||||
shallow?: boolean;
|
||||
source?: boolean;
|
||||
return flat;
|
||||
}
|
||||
|
||||
export const tabifyDocs = (
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue