gpt4 book ai didi

javascript - searchkit:RefinementListFilter 无法访问 json 中的某些数据

转载 作者:可可西里 更新时间:2023-11-01 13:19:38 26 4
gpt4 key购买 nike

我将 searchkit 作为网站的一部分使用,但在访问之前已转换为 json 格式的数据时遇到问题。我的 json 目录如下所示:

(...)
hits:
0:
_index: content
_type: content
_source:
meta:
author: content
(...)

json

我正在使用 RefinementListFilter(在 ReactDOM.render 中),这工作正常:

<RefinementListFilter id="index" title="Index" field={"_index"}/>
<RefinementListFilter id="Type" title="Type" field={"_type"}/>

而我似乎无法访问作者所写的内容:

<RefinementListFilter id="Author" title="Author" field={"_source.meta.author"}/>

这不起作用(没有错误,当我输入这个时没有任何反应),虽然当我在这种情况下使用 _source.meta.author 它像预期的那样工作:

class SearchHit extends React.Component {
render() {
const result = this.props.result;
return (
<div className={this.props.bemBlocks.item("author")}> <b> Index: </b> {result._index} </div>
<div className={this.props.bemBlocks.item("author")}> <b> Author: </b> {result._source.meta.author} </div>
)}}

我做错了什么?第一个和最后一个代码片段工作得很好,只是中间那个不行。

最佳答案

问题出在您的 elasticsearch 实例的字段索引中。根据docs , Searchkit 需要两种不同的索引字段来进行搜索和过滤。

在您的情况下,author 字段似乎未正确编入索引。

要解决这个问题,您需要更改字段 author 的 elasticsearch 映射:

    ...
"meta": {
"properties": {
"author": {
"type": "text",
"fields": {
"raw": {
"type": "keyword"
}
}
...

然后您可以通过

访问 Refinementfilter 中的作者
<RefinementListFilter id="author" title="Author" field={"meta.author.raw"}/>

关于javascript - searchkit:RefinementListFilter 无法访问 json 中的某些数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53832323/

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