我正在使用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索引?
答案 0 :(得分:0)
onValueSelected
是在此处获取所选值的正确方法。 (如果需要,您还可以使用onQueryChange
获取完整查询)。在onValueSelected
中获得此选定值后,您可以使用简单的fetch
请求将此值编入您的elasticsearch索引中,或将其发送到后端。还有helper library和docs可供您休息。
我还建议将索引逻辑拉到服务器,而不是在客户端公开它,因为您需要写凭据才能执行写操作。这样可以使您的写凭据更安全。
例如:
<DataSearch
...
onValueSelected={(value) => {
fetch('YOUR_SERVER_URL' or 'Elasticsearch URL', { method: 'POST', body: {...} })
}
/>