iamazy / elasticsearch-sql

parse sql into elasticsearch dsl with antlr4
https://iamazy.github.io/elasticsearch-sql/
MIT License
339 stars 89 forks source link

sql查询 #11

Closed lqiiiang911 closed 4 years ago

lqiiiang911 commented 4 years ago

请问,sql语句支持这种keyword查询么?其中authors的类型是text,支持的话应该怎么写sql? { "query": { "term": { "authors.keyword": "杜甫" } }

iamazy commented 4 years ago

text类型是需要分词吗,可以用 select * from tttable where authors~="杜甫"

lqiiiang911 commented 4 years ago

需要分词,我尝试了一下authors~="杜XXXX甫"这种情况,看了下转换成DSL后的语句是没有.keyword的,查询不到结果,在DSL上加上.keyword就可以查询到,有什么办法能解决么?

iamazy commented 4 years ago

你这个索引的mapping是自动生成的吧,你可以查看一下这个索引的mapping,authors字段的类型是text,authors下面还有个子fields,是authors.keyword,这个是keyword类型的, 你如果要查authors.keyword不分词的话,需要用 select * from tttable where authors.keyword="杜甫" 查询authors分词的话,用 select * from tttable where authors~="杜甫"

keyword类型的字段是不能分词的,所以你要分词没法用authors.keyword

lqiiiang911 commented 4 years ago

可以了,多谢!