#reactjs #elasticsearch
#reactjs #elasticsearch
Вопрос:
Я делаю запрос api к elasticsearch, который отвечает объектом.. что-то вроде этого:
{
"body": {
"took": 34,
"timed_out": false,
"_shards": {
"total": 2,
"successful": 2,
"skipped": 0,
"failed": 0
},
"hits": {
"total": {
"value": 2282,
"relation": "eq"
},
"max_score": 1.6155963,
"hits": [
{
"_index": "newspaper",
"_type": "_doc",
"_id": "aUU1IXUB9r40FEEAkQ8p",
"_score": 1.6155963,
"_source": {
"message": "message one",
"attachments": [],
.
.
.
}
},
{
"_index": "newspaper",
"_type": "_doc",
"_id": "aUU1IXUB9r40FEEAkQ8p",
"_score": 1.6155963,
"_source": {
"message": "message two",
"attachments": [],
.
.
.
Используя хуки, я инициализировал const [results, setResults] = useState({});
и установил результат после вызова axios просто отлично.
Если я получу ключи объекта следующим образом:
return (
<div id="results" className="search-results">
{(Object.keys(results))}
</div>
);
Я получаю 5 ключей [«тело», «Код состояния», «заголовки», «предупреждения», «мета»]
bodystatusCodeheaderswarningsmeta
Как мне создать цикл, чтобы получить все сообщения внутри _source массива обращений внутри тела? хотел бы перечислить их.
Ответ №1:
Вы можете сделать что-то вроде этого:
return (
<div id="results" className="search-results">
{result amp;amp; result.body.hits.hits.map(hit=>(
<p>{hit['_source']['message']}</p>
)}
</div>
);