簡體   English   中英

searchkit:RefinementListFilter無法訪問json中的某些數據

[英]searchkit: RefinementListFilter can't access certain data in json

我將usig 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實例的字段索引中。 根據文檔 ,Searchkit需要兩種不同類型的索引字段進行搜索和過濾。

在您的情況下,似乎字段author沒有正確索引。

要解決此問題,您需要更改字段作者的elasticsearch映射:

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

然后,您可以通過Refinementfilter訪問作者

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

嘗試重新構建您的JSON文件以獲得明確的說明。 您需要兩個不同的字段進行搜索和過濾。

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

在Refinementfilter中,可以通過這種方式訪問​​它

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM