Javascript 对 Elasticsearch 的查询不适用于 Child 个元素
Javascript Querying on Elasticsearch does not work on Child Elements
我正在尝试在我的 reactjs-app 中的 elasticsearch 数据库中显示搜索结果。但是我只能访问上层的键值对,无法到达children.
我的elasticsearch-objects的结构如下:
...
"hits":[{
"_index":"knowledgecrawler",
"_type":"doc",
"_id":"5fea73f38399f4c01f",
"_score":1.0,
"_source":{
"content":"content comes here",
"meta":{
"author":"Jones@whosebug.com",
"title":"I am lost"
"date":"today",
"keywords":["Whosebug"],
"language":"Javascript",
}
"raw":{
"date":"2017-03-08",
"subject":"How do I get here?"
}
}}]
elasticsearch-object 大得多,但我只在 "hits" 中搜索。使用以下代码行,我可以轻松显示第一级值(_index、_type、_id),但是到目前为止,任何访问 children 的尝试都失败了:
render() {
const result = this.props.result;
return (
<div className={this.props.bemBlocks.item().mix(this.props.bemBlocks.container("item"))} key={result._id}>
<div className={this.props.bemBlocks.item("title")}>{result._id}</div>
<div className={this.props.bemBlocks.item("title")}>{result._type}</div>
</div>
)
}
谁能告诉我如何访问 _source
的 children。例如。我想在前端显示作者。
编辑:
所以错误显然是由于 Elasticsearch 中的 _source
字段没有索引,因此不可搜索(根据 elasticsearch docs)。
到目前为止我还没有想出解决方案,但是当我找到它时 post 会在这里找到它。也非常感谢您的帮助。
假设您有以下数据:
data = {"hits":[{
"_index":"knowledgecrawler",
"_type":"doc",
"_id":"5fea73f38399f4c01f",
"_score":1.0,
"_source":{
"content":"content comes here",
"meta":{
"author":"Jones@whosebug.com",
"title":"I am lost"
"date":"today",
"keywords":["Whosebug"],
"language":"Javascript",
}
"raw":{
"date":"2017-03-08",
"subject":"How do I get here?"
}
}}]}
现在你的问题是:谁能告诉我如何访问 _source 的子项。例如。我想在前端显示作者。
因此,您可以执行以下操作来获取 _source
的 author
:
{data.hits && data.hits.length > 0 && data.hits[0]._source && data.hits[0]._source.meta && data.hits[0]._source.meta.author ?data.hits[0]._source.meta.author : ''}
如果您有多个匹配项,那么您可以像这样使用 array.map():
data.hits.map(value => value._source && value._source.meta && value._source.meta.author ? value._source.meta.author : '')
我正在尝试在我的 reactjs-app 中的 elasticsearch 数据库中显示搜索结果。但是我只能访问上层的键值对,无法到达children.
我的elasticsearch-objects的结构如下:
...
"hits":[{
"_index":"knowledgecrawler",
"_type":"doc",
"_id":"5fea73f38399f4c01f",
"_score":1.0,
"_source":{
"content":"content comes here",
"meta":{
"author":"Jones@whosebug.com",
"title":"I am lost"
"date":"today",
"keywords":["Whosebug"],
"language":"Javascript",
}
"raw":{
"date":"2017-03-08",
"subject":"How do I get here?"
}
}}]
elasticsearch-object 大得多,但我只在 "hits" 中搜索。使用以下代码行,我可以轻松显示第一级值(_index、_type、_id),但是到目前为止,任何访问 children 的尝试都失败了:
render() {
const result = this.props.result;
return (
<div className={this.props.bemBlocks.item().mix(this.props.bemBlocks.container("item"))} key={result._id}>
<div className={this.props.bemBlocks.item("title")}>{result._id}</div>
<div className={this.props.bemBlocks.item("title")}>{result._type}</div>
</div>
)
}
谁能告诉我如何访问 _source
的 children。例如。我想在前端显示作者。
编辑:
所以错误显然是由于 Elasticsearch 中的 _source
字段没有索引,因此不可搜索(根据 elasticsearch docs)。
到目前为止我还没有想出解决方案,但是当我找到它时 post 会在这里找到它。也非常感谢您的帮助。
假设您有以下数据:
data = {"hits":[{
"_index":"knowledgecrawler",
"_type":"doc",
"_id":"5fea73f38399f4c01f",
"_score":1.0,
"_source":{
"content":"content comes here",
"meta":{
"author":"Jones@whosebug.com",
"title":"I am lost"
"date":"today",
"keywords":["Whosebug"],
"language":"Javascript",
}
"raw":{
"date":"2017-03-08",
"subject":"How do I get here?"
}
}}]}
现在你的问题是:谁能告诉我如何访问 _source 的子项。例如。我想在前端显示作者。
因此,您可以执行以下操作来获取 _source
的 author
:
{data.hits && data.hits.length > 0 && data.hits[0]._source && data.hits[0]._source.meta && data.hits[0]._source.meta.author ?data.hits[0]._source.meta.author : ''}
如果您有多个匹配项,那么您可以像这样使用 array.map():
data.hits.map(value => value._source && value._source.meta && value._source.meta.author ? value._source.meta.author : '')