在弹性搜索查询中使用两个检查

时间:2016-01-13 12:44:31

标签: elasticsearch

当满足以下条件时,我正在尝试从弹性搜索索引中获取数据。

  1. UPDATE targetTable SET LessonTaken = 'Y' WHERE EXISTS ( SELECT 1 FROM anotherTable WHERE targetTable.col1 = anotherTable.col2 ) 为空字符串(例如“”)
  2. stream_id是特定字符串(例如“unknown_source”)
  3. 我可以分别使用以下两个查询: 用于检查空字符串:

    source_id

    用于检查{ "query": { "filtered": { "filter": { "script": { "script": "_source.stream_id.length() == 0" } } } } }

    source_id

    但现在我看到ES版本2.0中不推荐使用'过滤'查询,我使用的是2.1版。那么,我如何和这两个条件?我查看过滤后的查询页面文档,然后说

      

    使用bool查询代替查询和过滤器的must子句   过滤器的子句。

    所以,然后我尝试了以下查询,但它不起作用。

    {
    "query": { 
      "bool" : {
        "must" : {
          "term" : { "source_id" : "unknown_source" }
        }
      }
    }
    }
    

1 个答案:

答案 0 :(得分:2)

您可以在$ grep -q $ID file.xml && echo exists 部分内使用$ grep ">${ID}<" file.xml && echo exists 这样做(因为您不关心得分)

bool/must

或者您也可以在查询上下文中保留两个级别(即使您不关心评分)

filter