easy-es 查询
2024-04-15 本文已影响0人
程序男保姆
分词检索
| ES原生 | Easy-Es | 类型 | 是否支持分词 | 描述 |
|---|---|---|---|---|
| term | eq | keyword类型 | 否 | 完全匹配,查询条件必须都是text分词中的,且不能多余,多个分词时必须连续,顺序不能颠倒。 |
| wildcard | like/likeLeft/likeRight | 不支持 | 否 | 根据 API 模糊匹配,like全模糊,likeLeft左模糊,likeRight右模糊。 |
| match | match | text类型 | 是 | 完全匹配,match分词结果和text的分词结果有相同的即可,不考虑顺序。 |
| matchPhrase | matchPhrase | text类型 | 是 | 完全匹配,matchPhrase的分词结果必须在text字段分词中都包含且顺序必须都相同,而且必须都是连续的。 |
| matchPhrasePrefixQuery | matchPhrasePrefixQuery | 不支持 | 是 | matchPhrasePrefix与matchPhrase相同,除了它允许在文本的最后一个词上的前缀匹配。 |
| multiMatchQuery | multiMatchQuery | text类型 | 是 | 全字段分词匹配,可实现全文检索功能。 |
| queryStringQuery | queryStringQuery | text类型 | 是 | 完全匹配,queryString中的分词结果至少有一个在text字段的分词结果中,不考虑顺序。 |
| prefixQuery | prefixQuery | text类型 | 是 | 完全匹配,只要分词后的词条中有词条满足前缀条件即可。 |
MySQL和Easy-Es语法对照表
| MySQL | Easy-Es | es-DSL/es java api |
|---|---|---|
| and | and | boolQueryBuilder.must(queryBuilder) 计算得分 |
| and | filter | boolQueryBuilder.filter(queryBuilder) 不计算得分 |
| or | or | boolQueryBuilder.should(queryBuilder) |
| ! | not | boolQueryBuilder.mustNot(queryBuilder) |
| = | eq | term |
| > | gt | QueryBuilders.rangeQuery('es field').gt() |
| >= | ge | QueryBuilders.rangeQuery('es field').gte() |
| < | lt | QueryBuilders.rangeQuery('es field').lt() |
| <= | le | QueryBuilders.rangeQuery('es field').lte() |
| like '%field%' | like | QueryBuilders.wildcardQuery(field,value) |
| not like '%field%' | notLike | must not wildcardQuery(field,value) |
| like '%field' | likeLeft | QueryBuilders.wildcardQuery(field,*value) |
| like 'field%' | likeRight | QueryBuilders.wildcardQuery(field,value*) |
| between | between | QueryBuilders.rangeQuery('es field').from(xx).to(xx) |
| is null | isNull | must not QueryBuilders.existsQuery(field) |
| in | in | QueryBuilders.termsQuery(" xx es field", xx) |
| group by | groupBy | AggregationBuilders.terms() |
| order by | orderBy | fieldSortBuilder.order(ASC/DESC) |
| min | min | AggregationBuilders.min |
| max | max | AggregationBuilders.max |
| avg | avg | AggregationBuilders.avg |
| sum | sum | AggregationBuilders.sum |
| order by xxx asc | orderByAsc | fieldSortBuilder.order(SortOrder.ASC) |
| order by xxx desc | orderByDesc | fieldSortBuilder.order(SortOrder.DESC) |
| join | nested | QueryBuilders.nestedQuery() |
| - | match | matchQuery |
| - | matchPhrase | QueryBuilders.matchPhraseQuery |
| - | matchPrefix | QueryBuilders.matchPhrasePrefixQuery |
| - | queryStringQuery | QueryBuilders.queryStringQuery |
| select * | matchAllQuery | QueryBuilders.matchAllQuery() |
| - | highLight | HighlightBuilder.Field |
| ... | ... | ... |
这样的格式更易于阅读和比较,使得每个功能对应的关键字都清晰地列出来。