来自SQL语句的Elasticsearch DSL查询

Yad*_*ada 6 elasticsearch

我是Elasticsearch的新手.我不认为我完全理解查询和过滤器的概念.在我的情况下,我只想使用过滤器,因为我不想使用像评分这样的高级功能.

如何将以下SQL语句转换为elasticsearch查询?

SELECT * FROM advertiser 
WHERE company like '%com%' 
AND sales_rep IN (1,2) 
Run Code Online (Sandbox Code Playgroud)

到目前为止我所拥有的:

curl -XGET 'localhost:9200/advertisers/advertiser/_search?pretty=true' -d ' 
 { 
     "query" : { 
         "bool" : { 
             "must" : { 
                 "wildcard" : { "company" : "*com*" } 
             } 
         } 
     }, 
     "size":1000000 

}' 
Run Code Online (Sandbox Code Playgroud)

如何在sales_rep字段上添加OR过滤器?

谢谢

And*_*ndy 2

在“必须”子句之后添加“应该”子句。在布尔查询中,默认情况下必须匹配一个或多个should 子句。实际上,您可以将“minimum_number_should_match”设置为任何数字,请查看bool 查询文档

对于你的情况,这应该有效。

    "should" : [
        {
            "term" : { "sales_rep_id" : "1" }
        },
        {
            "term" : { "sales_rep_id" : "2" }
        }
    ],
Run Code Online (Sandbox Code Playgroud)

同样的概念也适用于布尔过滤器。只需将“查询”更改为“过滤”即可。bool 过滤器文档在这里