java - Elasticsearch 返回没有父对象的嵌套对象

标签 java elasticsearch nested elasticsearch-jest

我有一个如下所示的索引:

{
    "mappings":{
        "authors":{
            "properties":{
                "books":{
                    "type":"nested",
                    "properties":{
                        "title":{"type":"string"},
                        "firstSentence":{"type":"string"},
                        "isbn":{"type":"string"},
                        "publishDate":{"type":"date"},
                    }
                },
                "firstName":{"type":"string"},
                "lastName":{"type":"string"}, 
                "birthday":{"type":"date"},
                }
           }
}

我正在通过 Java 客户端查询该索引。对于这个查询,我不关心作者;我想拿回来的只是书。例如,我想查找标题和第一句中包含“Hello”一词的所有书籍。

目前,我使用嵌套查询返回作者列表,然后手动解析该列表以获取书籍。有没有办法让Elasticsearch直接返回图书列表?我使用的是 Elasticsearch 版本 1.5.2 和 Jest 0.1.6

最佳答案

不,结果是您注入(inject)的文档。您可以使用源过滤来限制返回文档的字段,这样您只能返回嵌套文档。但这些将始终在嵌套父级的范围内。因此,如果您找到两位作者各有几本书,您会得到两个结果,其中包含嵌套文档。

https://www.elastic.co/guide/en/elasticsearch/reference/current/search-request-source-filtering.html#search-request-source-filtering

关于java - Elasticsearch 返回没有父对象的嵌套对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38405954/

相关文章:

java - 使网络密集型代码更加健壮

elasticsearch - elasticsearch:如何绘制常见字符错误?

c - 将 xmlDoc 嵌套到现有 xmlTextWriter 中

objective-c - 嵌套单引号

Python 命名占位符和嵌套字典 (JSON)

java - 无法添加窗口Android对话框

java - 返回字符串的方法数组

elasticsearch - 用ELK用预定义的映射替换值

elasticsearch - 日志没有从logstash推送到elasticsearch

java - 如何在 IntelliJ 中运行 Java .jar 文件?错误 - 参数 : archive-name [archive-type]