gpt4 book ai didi

node.js - Elasticsearch 响应空白_source

转载 作者:行者123 更新时间:2023-12-02 23:10:21 25 4
gpt4 key购买 nike

我在我的 Node 项目中使用 @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": {}
},

最佳答案

您基本上错过了一件小事,在索引时您在 categorysomething_else 字段以及 _source 字段中发送了空数据, ES 将您发送的内容存储为 JSON 负载的一部分。 _id 在您的案例中是自动生成的,因此您会在那里看到数据,但它不是您的 body(JSON payload) 的一部分,后者将形成 _source 内容,因此它是空的。

如果您只在字段中包含一些数据,这些文档将具有 _source 数据。

让我举个例子给你看。

索引定义

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

包含空数据的索引文档。

POST/{{您的索引名称}}/_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
}
]

带有一些示例数据的索引文档

{
"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
}
]

关于node.js - Elasticsearch 响应空白_source,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61113713/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com