赞
踩
1、查看是否存在只读属性
GET /personal_report_chapter_es/_settings
2、解除只读命令
PUT _settings { "index":{ "blocks":{ "read_only_allow_delete":"false" } } }
返回的文档必须满足filter子句的条件。但是跟Must不一样的是,不会计算分值, 并且可以使用缓存。
从上面的描述来看,你应该已经知道,如果只看查询的结果,must和filter是一样的。区别是场景不一样。如果结果需要算分就使用must,否则可以考虑使用filter。
GET kibana_sample_data_ecommerce/_search { "size": 1000, "query": { "bool": { "must": [ {"term": { "currency": "EUR" }} ], "filter": { "range": { "order_date": { "gte": "2020-01-25T23:45:36.000+00:00", "lte": "2020-02-01T23:45:36.000+00:00" } } } } } }简单来讲,如果你的业务场景不需要算分,使用filter可以真的让你的查询效率飞起来。
sort命令用来对查询的数据针对某些字段进行排序
3.1、查询上映在2016到2018年的所有的电影,再根据上映时间的倒序进行排序
GET movies/_search { "query": { "range": { "year": { "gte": 2016, "lte": 2018 } } }, "sort": [ { "year": { "order": "desc" } } ] }3.2、
sort
支持设置多个字段参与排序
GET /offline_sales/_search { "sort" : [ { "sale_date" : {"order" : "asc"}}, "total_price", { "order_id" : "desc" }, "_score" ] }
方案1:在设置索引属性时解除索引最大查询数的限制
put _all/_settings { "index.max_result_window":200000 }_all表示所有索引,针对单个索引的话修改成索引名称即可
方案2::在创建索引的时候加上
"settings":{ "index":{ "max_result_window": 500000 } }这样设置完毕之后还不行,如果继续使用原来的API进行查询,查询到的结果最大数量仍然是10000,这时候需要在API中添加这样一行代码:
searchSourceBuilder.trackTotalHits(true);
POST _reindex { "source": { "index": "old_index", "size":1000 //可选,每次批量提交1000个,可以提高效率,建议每次提交5-15M的数据 }, "dest": { "index": "en_law" } }将老索引的数据迁移到新索引中
我们在使用ES进行查询时常常遇到这样的场景:需要根据用户输入的查询关键字同时去匹配多个字段,并且希望对匹配字段的权重做不同的设置,比如同时去匹配公司名称和公司简介,这里一般需要提升公司名称匹配的权重,这样得出的相关性评分才会更准确。
在ES中,我们可以通过boost参数来控制多字段查询的权重。boost是一个用来修改文档的相关性的参数,默认值是1。可以通过设置不同的值,提升该字段在相关性评分的权重。
GET /personal_report_chapter_es/_search { "_source": {"includes": ["title","chapterTextContent","chapterId"]}, "query": { "bool": { "should": [ { "match": { "title": { "query": "8月经济继续向好", "boost": 10 } } }, { "match": { "chapterTextContent":{ "query": "8月经济继续向好", "boost": 5 } } } ] } }, "sort": [ { "_score": { "order": "desc" } } ], "from": 0, "size": 50 }注意:这个的chapterTextContent和title字段都要设置权重,否则会不准确,设置一个高一个低即可
multi_match+boost一起使用
GET /personal_report_chapter_es/_search { "_source": {"includes": ["createTime","title","chapterTextContent","chapterId"]}, "query": { "multi_match": { "query": "国务院", "fields": ["title^10","chapterTextContent"] } } }title^10 代表搜索提升10倍相关性,也就是说用户搜索的时候其实以这个title为主,desc为辅,title的匹配相关度当然要提高权重比例了。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。