2017-04-11 98 views
0

我有哪些运作良好,足以单独查询鲜明:ElasticSearch查询DSL合并条款和通配符

{"wildcard":{"city":"*Beach*"}} {"terms":{"state":["Florida","Georgia"]}}

而是试图将它们组合成一个查询被证明是相当的挑战。

我曾以为只是做{{"wildcard":{"city":"*Beach*"}},{"terms":{"state":["Florida","Georgia"]}}}会做到这一点,但事实并非如此。所以然后我尝试了几个不同的迭代使用数组,和布尔查询等。有人可以指出我在正确的方向吗?

回答

2

Bool query应该是正确的路要走。

以下是为您的使用情况的一个例子:

{ 
    "query": { 
    "bool": { 
     "must": [ 
     { 
      "wildcard": { "city": "*Beach*" } 
     }, 
     { 
      "terms": { 
      "state": [ "Florida", "Georgia" ] 
      } 
     } 
     ] 
    } 
    } 
} 

如果没有结果,则意味着没有项目相匹配两者的标准。

+0

啊,这是工作。为什么只是将两个工作哈希合并为一个更大的哈希值没有任何理由不起作用? – PamB

+0

很高兴听到它的工作。您的语法不起作用,因为它不是Elasticsearch支持的有效DSL。 –