1

我正在使用 Reactivesearch 中的 DataSearch 来实现自动完成功能,我试图弄清楚如何获取用户选择的查询并将其添加到我在 Appbaseio 托管的自动完成索引中?

当我说用户选择的查询时,我的意思是输入或从 DataSearch 组件下拉列表中选择的查询。

这是我到目前为止想出的

<DataSearch
   componentId="SearchSensor"
   dataField={["original_title"]}
   className="search-bar"
   onValueSelected={
     function(value, cause, source) {
       console.log("current value: ", value)
     }
   }
   iconPosition="right"
   innerclassName={{
     list: "text-item"
   }}
   />

上面的 onValueSelected 直接取自docs。看来这是我需要使用的属性才能做到这一点。我只是不确定如何将它连接到我的 Appbaseio ES 索引?

4

1 回答 1

0

onValueSelected是在此处获取所选值的正确方法。(onQueryChange如果需要,您还可以获取完整的查询)。获取此选定值后,onValueSelected您可以使用fetch对弹性搜索索引的简单请求对其进行索引,或将其发送到后端。还有一个帮助程序库和您可以尝试的休息文档

另外,我建议将索引逻辑拉到服务器而不是在客户端公开它,因为您需要写入凭据才能执行写入。这将使您的写入凭据更安全。

例如:

<DataSearch
  ...
  onValueSelected={(value) => {
    fetch('YOUR_SERVER_URL' or 'Elasticsearch URL', { method: 'POST', body: {...} })
  }
/>
于 2018-08-22T06:13:50.857 回答