我知道这有效:
{
"query": {
"query_string": {
"query": "reading,debating"
}
}
它搜索所有出现的阅读或辩论。我想知道是否有一种方法,以便我可以插入一个字符串数组而不是逗号分隔的字符串?看起来像这样:
{
"query": {
"query_string": {
"query": ["reading","debating"]
}
}
答案 0 :(得分:5)
在您的第一个示例中,它是一个QueryString查询,其中elasticsearch内部处理查询理解,默认情况下,逗号是分隔符,这是您的第一个查询的工作方式。
在这种情况下,你可能想要的是由布尔值组合的两个或多个术语查询(如果你想要OR逻辑,则使用“should”,如果你想要AND逻辑,则使用“must”)。
以下是如何从curl执行此操作: http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/query-dsl-bool-query.html
如果要在Java中以编程方式使用它,可以使用QueryBuilders构造术语查询和布尔查询