首页 文章

将查询从SQL转换为Elasticsearch

提问于
浏览
-1

我无法将查询从sql转换为elasticsearch .

要转换的SQL查询: -

从表tb1中选择tb1 . *,其中tb1.coloumn1在(“value1”,“value2”,“value3”)和tb1.coloumn2 =“value4”和tb2.cloumn3 =“value5”; curl'http:// ...:9200 / index1 / document / _search?pretty'-d'{“query”:{“constant_score”:{“filter”:{“terms”:{“product”:[“ Sudaderas“,”Bicicletas“]}}}}}'

              • -错误 -

{“take”:8,“timed_out”:false,“_ shards”:{“total”:5,“success”:5,“failed”:0},“hits”:{“total”:0,“ max_score“:null,”点击“:[]}}

谢谢,浸

1 回答

  • 0

    sql查询转换为elasticsearch: -

    SQl query : -

    从表tb1中选择tb1 . *,其中tb1.coloumn1在(“value1”,“value2”,“value3”)和tb1.coloumn2 =“value4”和tb2.cloumn3 =“value5”;

    Elasticsearch query : -

    {“bool”:{“must”:{“terms”:{“column1”:[“tops”,“blusas”]}},“should”:[{“match”:{“column2”:{“查询“:”Blusas“,”键入“:”boolean“}}},{”match“:{”column3“:{”query“:”Blusas“,”type“:”boolean“}}}]}}

    必须进行许多更改才能使这项工作与术语查询一起使用 . 但会列出一些: -

    • 条款查询仅搜索小写 . 因为我们的默认分析器是这样设置的 .

    • 如果分析或未分析该字段并不重要 . 在找到这个术语查询东西的某个地方,我发现不应该分析该字段 . 这也是由于默认的分析仪 .

    确保在使用术语/术语查询时使用小写 .

    • Not completely Clear : - 当查询包含空格时,术语查询不起作用 . 我正在努力解决这个问题 . 但目前的问题已得到解决 .

    Spring Elasticsearch Java 相同的查询实现: -

    SearchQuery searchQuery1 = new NativeSearchQueryBuilder() . withQuery(QueryBuilders.boolQuery() . must(QueryBuilders.termsQuery(“column1”,column1List)) . should(QueryBuilders.matchQuery(“column2”,data)) . should(QueryBuilders.matchQuery (“coloumn3”,data))) . build(); List table1List = elasticsearchTemplate.queryForList(searchQuery1,table.class);

    column1List将所有元素作为单个单词,并在将其插入数组时转换为小写 .

    希望这有助于将来的某些人 .

    让我知道是否有更好的方法来做这件事 .

    谢谢

相关问题