1. ES 基础常用命令
1. 获取某索引下数据 默认只展示10条
GET {indexName}/_search
2. 无条件 分页查询 es默认从0页开始 eg:获取第一页30条数据
GET {indexName}/_search
{
"from": 0,
"size": 30
}
3. 条件查询
es字段类型可以进行设置 这里针对keyword 和 text类型数据查询进行比较
查询关键字:term、match、match_phrase、query_string
term: 查询keyword类型数据需完全匹配 查询text类型数据 由于text类型数据会被分词
故查询条件包含分词内容才会匹配到,eg: name:王老三 会被分词为[王,老,三]
当查询条件是王老三时,匹配不到数据,当查询条件是王时,符合分词后的王,可有查询到
match: match会被分词,而keyword不会被分词,match的查询条件需要跟keyword的完全匹配
match分词,text也分词,只要match的分词结果和text的分词结果有相同的就匹配
eg: name:王老三 name:张老三 会被分词为[王,老,三] [张,老,三]
当查询条件为王老三时,会分词为[王,老,三]
由于张老三的分词包括当前分词[老,三] 满足其一即可 所以张老三也会被查询出来
match_phrase:
match_phrase 匹配keyword字段 这个同上必须跟keyword一致才可以
match_phrase匹配text字段 match_phrase是分词的,text也是分词的。
match_phrase的分词结果必须在text字段分词中都包含,而且顺序必须相同,而且必须都是连续的
query_string:
query_string无法查询查询keyword类型的字段
query_string查询text类型的字段 和match_phrase区别的是,不需要连续,顺序还可以调换
eg: story:"he is a boy" 当查询条件是"he boy"时是可以匹配到的 但match_phrase就匹配不到
当查询条件是"he is" 或者 “is a”或者“a boy”这种连续的条件 就match_phrase就可以匹配到
当然query_string也能匹配到
其他的查询关键字还有terms match_all muti_match等可以自行了解
GET {indexName}/_search
{
"query": {
"查询关键字": {
"字段名称": "查询条件"
}
}
}GET {indexName}/_search
{
"query": {
"multi_match": {
"query" : "查询条件",
"fields" : ["field1", "field2"] //根据field类型 决定是否分词
}
}
}GET {indexName}/_search/
{
"query": {
"terms": {
"title": [ "blog","first"] //和multi_match区别是它是多个字段 这个是一个字段多个条件
}
}
}