如何从android客户端弹性搜索复合查询?

时间:2018-06-09 04:11:45

标签: android elasticsearch retrofit2

我使用firestore作为db和一个elasticsearch实例。我触发云功能将数据放到弹性服务器上。我正在使用elasticsearch,因为我需要复合查询来检索数据。我可以通过改造发送基本查询。我是关于该主题的新手,我正在寻找一些资源来学习 es + andorid + retrofit 的复合查询,或者其他任何方式。你有什么建议吗?

我的意思是如何在android retrofit中编写下面的查询

{
"query": {
    "match_all": {}
},
"filter": {
    "bool": {
        "must": [
            {
                "term": {
                    "city": "New york"
                }
            },
            {
                "term": {
                    "state": "NY"
                }
            },
            {
                "bool": {
                    "should": [
                        {
                            "bool": {
                                "must": [
                                    {
                                        "term": {
                                            "businessName": "Java"
                                        }
                                    },
                                    {
                                        "term": {
                                            "businessName": "Shop"
                                        }
                                    }
                                ]
                            }
                        },
                        {
                            "bool": {
                                "must": [
                                    {
                                        "term": {
                                            "category": "Java"
                                        }
                                    },
                                    {
                                        "term": {
                                            "category": "Shop"
                                        }
                                    }
                                ]
                            }
                        }
                    ]
                }
            }
        ]
    }
}

2 个答案:

答案 0 :(得分:0)

实际上您的问题不清楚。如果您可以运行基本查询,那么在逻辑上可以运行复合查询。但是,如果您要求同时从弹性实例和Firestore实例中检索数据,则应创建一个新的service / api实例,该实例接受来自移动设备的请求并从两个实例中查找结果,然后合并并发送回移动设备,否则来自移动端的两个服务/ api的合并响应将影响性能/用户体验。

答案 1 :(得分:0)