ES在查询的时候非常方便,
笔者总结了Es的基础查询 *** 作,供大家指正和学习。
全部查询,配合其他的 *** 作进行数据的筛选,字段的筛选等,并且伴随着条件的增加,建议使用POST方式,
POST /index/_search { "query": { "match_all": {} } }筛选字段
_source对需要的字段进行筛选。
分页from a size b 拿到目的集合中索引为a到b的数据。
{ "query": { "match_all": {} }, "_source": [ "id", "nickname", "age" ], "from": 0, "size": 10 }排序
text类型无法排序,keyword类型可以,对于text,可以用它的.keyword进行排序,
"sort": [ { "age": "asc" }, { "money": "desc" } ]must
需要满足条件列表中的所有
term/terms不进行分词搜索,仅仅支持一个字段的筛选,筛选出包含该字符的数据。
term精确匹配,不会进行分词。
terms则表示根据一个列表进行匹配。
对于text文本的信息,能够进行分词,则使用包含搜索信息分词的就能被成功筛选。
然而text类型也有个keyword,不支持分词,其值也text文本内容,用keyword需要全量输入搜索信息才能被成功筛选。
参考:https://blog.csdn.net/dg19971024/article/details/107103201
{ "query": { "terms":{ "name1":"霸王别姬" } "terms": { "name1.keyword": ["霸王别姬","肖申克的救赎"] } } }match
在查询时,是进行了分词的 *** 作。查询包含某字符分词结果数据的信息。查询也有正则和前缀查询到时候搜。
对于查询的时候,如果是text类型,也可以使用它的.keyword进行相关查询,具体情况具体分析。
例如:我是你爸爸,被分词为 我,是,你,爸爸,筛选结果会是包含其分词结果的数据(具体条件可以定义)。
{ "query": { "match": { "name1": { "query": "我是你爸爸", "boost": 2 } } } }
具体条件约束
多字段匹配,可以在每个字段后面添加^n,指定权重。各个字段也可以使用*代替前缀或者后缀。
POST /movie/_search { "query": { "multi_match": { "query": "我是你爸爸", "fields": [ "name1^2", "*_content" ], "type": "cross_fields" } } }参数 type
取值范围0-1,当type使用默认值 best_fields ,tie_breaker将会改变默认_score计算方式,采用best_field_score + tie_breaker*other_field_score。
analyzer用户搜索输入词采用哪种解析器进行分词,默认使用mapping阶段指定的分词器;如果analyzer设置和索引阶段的分词器不一致时,且operator为and 那么在执行查询时可能理应完全匹配的短语结果检索为空的情况。
fuzziness指定模糊程度,支持数字或auto
prefix_length当使用模糊查询时,用来指定前缀不变长度
lenient当查询报错时是否忽略该文档,默认为false
operator匹配关系的逻辑判断,默认为or,当为and时表示所有输入词必须完全匹配
minimum_should_match该参数生效的前提是operator为or,支持数字、百分比或者混合配置,
zero_terms_query当用户输入词全部为停用词时是否返回文档,默认为none即不返回数据,设置为all时,查询将被改写为match_all
auto_generate_synonyms_phrase_query是否开启同义词查询,默认为true
组合查询 must是指要同时满足多个条件
should满足一个条件就行。
must_not都不满足。
filter四者可以同时使用,里面都是方term/match
{ "query": { "bool": { "must": [ { "match": { "desc": "大学" } } ], "must_not": [ { "term": { "sex": "1" } } ], "should": [ { "range": { "age": { "gt": "18", "lt": "22" } } }, { "match": { "desc": "毕业" } } ] } } }过滤查询
进行范围筛选
{ "query": { "match": { "desc": "大学" } }, "post_filter": { "range": { "money": { "gt": 100, "lt": 1000 } } } }高亮
将目标字符创高亮
{ "query": { "match": { "desc": "沙僧" } }, "highlight": { "pre_tags": [ "" ], "post_tags": [ "" ], "fields": { "desc": {} } } }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)