需要一些关于Elasticsearch引擎和react js的帮助



我希望你做得很好,我需要一些关于Elasticsearch引擎的帮助。我正在做的是,我试图创建一个搜索引擎,我已经成功地通过kibana将我的数据发布到弹性搜索引擎。但是">,但是我如何将弹性搜索的搜索组件添加到我的react应用程序中";,我在kibana索引中有大约400万条记录,当我尝试直接从react进行搜索时,需要很长时间才能用nodejs api将记录显示到我的frontapp应用程序中。下面是nodejs的代码,但这个代码的问题是它只给了我10条记录。

router.get('/tweets', (req, res)=>{
let query = {
index: 'tweets',
// size: 10000
}
if(req.query.tweets) query.q = `*${req.query.tweets}*`;
client.search(query)
.then(resp => {
return res.status(200).json({
tweets: resp.body.hits.hits
});
})
.catch(err=>{
console.log(err);
return res.status(500).json({
err
});
});

});

有没有任何方法可以将弹性搜索组件直接实现到我的reactjs应用程序中。就像localhost:9200/index一样。。直接从弹性搜索api?

您对Elasticsearch的请求对我来说有点奇怪,您是否尝试过像文档中那样使用body进行搜索?此行:

if(req.query.tweets) query.q = `*${req.query.tweets}*`;

似乎不是编写查询的正确方法。您要搜索哪个字段?

我看到您尝试使用size字段,这应该是正确的。您也可以尝试以下操作:

client.search({
index: 'tweets',
body: {
size: 1000, // You can put the size here to get more than 10 results
query: {
wildcard: { yourfield: `*${req.query.tweets}*` }
}
}
}, (err, result) => {
if (err) console.log(err)
})

您可以使用SearchKit从react应用程序直接查询弹性搜索。但是要注意,在您自己的基础设施之外公开DB服务是一种糟糕的做法。

你可以使用这样的组件:

import {
SearchkitManager,
SearchkitProvider,
SearchkitComponent
} from 'searchkit'
const searchkit = new SearchkitManager(host)
class Render extends SearchkitComponent {
render(){
let results = await this.searchkit.reloadSearch()
return <div>{results}</div>
}
}
function table(){
return <SearchkitProvider searchkit={searchkit}>
<Render />
</SearchkitProvider>
}

最新更新