首页 > 解决方案 > elastic4s:查询多值字段

问题描述

我有一个多值字段。那么我们如何为这样的字段运行查询呢?

假设“银行”文档有一个字段“城市”,表示存在城市银行。

如果我必须获取组中任一城市的所有银行,什么样的查询会有所帮助?

我尝试了 matchQuery 但它给出了错误:

def searchByCities(cities: Seq[String]) = {
    client.execute {
      search("bank").matchQuery("cities", cities) 
    }.await
  }

错误:

{"error":{"root_cause":[{"type":"parsing_exception","reason":"[match] unknown token [START_ARRAY] after [query]","line":1,"col":43}],"type":"parsing_exception","reason":"[match] unknown token [START_ARRAY] after [query]","line":1,"col":43},"status":400}

标签: elasticsearchelastic4s

解决方案


假设您的城市被索引为关键字,您可以使用术语查询。

https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-terms-query.html

我自己没有使用elastic4s,但是如果我理解正确的话,语法应该是这样的:

search("bank").query(termsQuery("cities", cities))

推荐阅读