我已经在elasticsearch中存储了三个json对象,每个对象都有一个title
和projects
数组。如何在elasticsearch的特定索引处获取元素?
{"name": "haris","projects": [{"title": "Splunk"},{"title": "QRadar"},{"title": "LogAnalysis"}]}
{"name": "khalid","projects": [{"title": "MS"},{"title": "Google"},{"title": "Apple"}]}
{"name": "Hamid","projects": [{"title": "Toyota"},{"title": "Honda"},{"title": "Kia"}]}
我写了一个查询通过_id
提取特定的对象和它的具体特点projects
curl -XGET 'localhost:9200/jsontest/_search?pretty' -d '{"query" : { "match" : {"_id":"AV1kzzZqAzHWQ2S7B8f1"} }, "_source": ["projects"]}'
正如预期的那样,它返回项目对象
{ "took" : 3, "timed_out" : false, "_shards" : { "total" : 5, "successful" : 5, "failed" : 0 }, "hits" : { "total" : 1, "max_score" : 1.0, "hits" : [ { "_index" : "jsontest", "_type" : "json", "_id" : "AV1kzzZqAzHWQ2S7B8f1", "_score" : 1.0, "_source" : { "projects" : [{"title" : "Splunk"},{"title" : "QRadar"},{"title" : "LogAnalysis"} ] } } ] } }
问题:有没有办法在特定的i上检索价值projects
?这是虚拟数据,在我的真实场景projects
可以有大量的元素,每个元素本身是一个具有很多属性的JSON对象。我只需要检索projects
的某个索引值。
只是要清楚你想从项目数组的其中一个元素返回某个字段,但是你不想返回整个项目数组元素?如果是这种情况,只需通过'inner_hits' [Elasticsearch Inner Hits]扩展查询来实现这一点(https://www.elastic.co/guide/en/elasticsearch/reference/current/search-request-inner-hits .html#nested-inner-hits) –
@UlugToprak不,我不想从某个元素获得某个字段,我想要数组的完整元素 –