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将所有元素作为单个单词,并在将其插入数组时转换为小写 .
希望这有助于将来的某些人 .
让我知道是否有更好的方法来做这件事 .
谢谢