Elasticsearch отвечает пустой _source - PullRequest
1 голос
/ 09 апреля 2020

Я использую библиотеку @elastic/elasticsearch в своем проекте узла и пытаюсь создать такой индекс

const { Client } = require('@elastic/elasticsearch')
const client = new Client({ node: 'http://localhost:9200' })
await client.index({
    index: 'myIndex',
    refresh: true,
    body: {
        category: '',
        something_else: ''
    }
})

Когда я пытаюсь получить запись

const { body } = await client.search({
    index: 'myIndex',
    body: {
        query: {
            "match_all": {}
        }
    }
})

Ответ

 {
    "_index": "myIndex",
    "_type": "_doc",
    "_id": "cjijWHEBHKa8WEr-JNYu",
    "_score": 1,
    "_source": {}
},

1 Ответ

1 голос
/ 09 апреля 2020

Вы в основном упустили небольшую вещь, при индексации вы отправляете пустые данные как в поле category и something_else, так и в поле _source, ES сохраняет то, что вы отправляете, как часть вашей полезной нагрузки JSON. _id автоматически генерируется в вашем случае, следовательно, вы видите данные там, но они не были частью вашего body(JSON payload), который бы формировал _source контент, следовательно, он пустой.

Если вы просто включив некоторые данные в ваши поля, эти документы будут иметь данные _source.

Позвольте мне показать вам пример.

Индекс Def

{
    "mappings": {
        "properties": {
            "category": {
                "type": "text"
            },
            "something_else": {
                "type": "text"
            }
        }
    }
}

Индекс делать c с пустыми данными.

POST / {{your-index-name}} / _ doc / 1

{
   --> note empty data or payload
}

Запрос на поиск

{
    "query": {
        "match_all": {}
    }
}

Ответ на поиск, который показывает пустой _source

   "hits": [
           {
            "_index": "justno",
            "_type": "_doc",
            "_id": "3",
            "_score": 1.0,
            "_source": {} --> Output similar to yours
        }
        ]

Индекс do c с некоторыми примерами данных

{
    "category": "foo",
    "something_else": "bar"
}

Снова поиск по всем поискам запрос, дает ниже результат

 "hits": [
            {
                "_index": "justno",
                "_type": "_doc",
                "_id": "4",
                "_score": 1.0,
                "_source": { --> doc which had data, while indexing
                    "category": "foo",
                    "something_else": "bar"
                }
            },
            {
                "_index": "justno",
                "_type": "_doc",
                "_id": "1",
                "_score": 1.0,
                "_source": {} --> note first doc response
            }
        ]
...