多个索引同时搜索
GET index1,index2/_search
常见查询
GET index/_search
{
"query": {
"bool": {
"must": [{
"match": { // 分词搜索
"name": "test"
}
}, {
"match_phrase": { // 短语分词搜索
"name": "test"
}
},{
"match_phrase_prefix": { // 短语前缀搜索
"name": {
"query": "test he",
"boost" => 2 // 权重 默认为1
}
}
},{
"multi_match": { // 多字段
"query": "test",
"fields": ["name^3", "nickname^2"],
"fuzziness": "AUTO" // 模糊纠正
"boost" => 2 // 权重 默认为1
}
}, {
"prefix": { // 前缀搜索
// 这里有个坑 例如 test-abc 是搜不到的 因为默认为 text 类型 会分词
"name": "test"
}
}, {
"prefix": { // 前缀搜索
// 改成 keyword 类型能搜到 test-abc, 但是会区分大小写,注意!
"name.keyword": "test-abc"
}
}, {
"wildcard": { // 模糊匹配,似like
"name": "*test*"
}
},{
"fuzzy": { // 模糊纠正匹配
"name": "test"
}
}],
"must_not": [ // 不算分数,会缓存
{
"term": {
"status": "0"
}
}
],
"filter": [ // filter 过滤器,相当于 where 条件,但是不计算分数,会缓存,合理利用会提高查询速度
{
"bool": {
"should": [
{
"range": {
"broadcasts": {"gt": 0}
}
},
{
"range": {
"videos": {"gt": 0}
}
}
]
},
},
{
"term" : { // 精确匹配
"name": "test"
}
}
]
}
},
"_source": ["username", "name", "display_name"], // 需要返回的字段
"size": 10,
"from": 0,
"sort": [{ // 排序
"_score": {
"order": "desc"
}
}],
"search_after": [1.23, '13671077B66A29874A257'] // 实时滚动查询,一般用于深度分页
}
“ or ”嵌套
{
"query": {
"bool": {
"must": [
{
"term": { // 指定值
"status": "enable"
}
},
{
"bool": {
"should": [{ // 相当于 or
"match": {
"name": "test"
}
},
{
"match": {
"display_name": "test"
}
}
]
}
}
]
}
}
}