es查询和更新 语句示例

文档目录: https://www.elastic.co/guide/index.html

GET _search
{
  "query": {
    "match_all": {}
  }
}

GET /_template/*

PUT /_template/hs_server_template
{
  "order": 0,
  "version": 60001,
  "index_patterns": [
    "hs_server*"
  ],
  "settings": {
    "index": {
      "refresh_interval": "5s"
    }
  },
  "mappings": {
    "doc": {
      "dynamic_templates": [
        {
          "message_field": {
            "path_match": "message",
            "match_mapping_type": "string",
            "mapping": {
              "type": "text",
              "norms": false
            }
          }
        },
        {
          "string_fields": {
            "match": "*",
            "match_mapping_type": "string",
            "mapping": {
              "type": "text",
              "norms": false,
              "fields": {
                "keyword": {
                  "type": "keyword",
                  "ignore_above": 256
                }
              }
            }
          }
        }
      ],
      "properties": {
        "@timestamp": {
          "type": "date"
        },
        "@version": {
          "type": "keyword"
        },
        "ErrorCode": {
          "type": "integer"
        },
        "geoip": {
          "dynamic": true,
          "properties": {
            "ip": {
              "type": "ip",
              "latitude": {
                "type": "half_float"
              },
              "longitude": {
                "type": "half_float"
              }
            }
          },
          "responseLogTime": {
            "type": "date",
            "format": "yyyy-MM-dd HH:mm:ss.SSS||yyyy-MM-dd||epoch_millis||yyyy-MM-dd HH:mm:ss.SSSZ"
          }
        }
      }
    },
    "aliases": {}
  }
}

DELETE /_template/my_test_play_dur_template

PUT /_template/tv_stats_play_dur_template
{
  "order": 0,
  "version": 60001,
  "index_patterns": [
    "tv_stats_play_dur*"
  ],
  "settings": {
    "index": {
      "refresh_interval": "30s"
    }
  },
  "mappings": {
    "doc": {
      "dynamic_templates": [
        {
          "message_field": {
            "path_match": "message",
            "match_mapping_type": "string",
            "mapping": {
              "type": "text",
              "norms": false
            }
          }
        },
        {
          "string_fields": {
            "match": "*",
            "match_mapping_type": "string",
            "mapping": {
              "type": "text",
              "norms": false,
              "fields": {
                "keyword": {
                  "type": "keyword",
                  "ignore_above": 256
                }
              }
            }
          }
        }
      ],
      "properties": {
        "@timestamp": {
          "type": "date"
        },
        "@version": {
          "type": "keyword"
        },
        "remote_address": {
          "type": "ip"
        },
        "duration": {
          "type": "long"
        },
        "id": {
          "type": "long"
        },
        "importbatchno": {
          "type": "keyword"
        },
        "index_name_suffix": {
          "type": "keyword"
        },
        "mac": {
          "type": "keyword"
        },
        "main_id": {
          "type": "long"
        },
        "main_name": {
          "type": "text",
          "fields": {
            "keyword": {
              "type": "keyword",
              "ignore_above": 256
            }
          }
        },
        "sub_id": {
          "type": "long"
        },
        "sub_name": {
          "type": "text",
          "fields": {
            "keyword": {
              "type": "keyword",
              "ignore_above": 256
            }
          }
        },
        "type_name": {
          "type": "text",
          "fields": {
            "keyword": {
              "type": "keyword",
              "ignore_above": 256
            }
          }
        },
        "url": {
          "type": "text",
          "fields": {
            "keyword": {
              "type": "keyword",
              "ignore_above": 256
            }
          }
        },
        "userid": {
          "type": "long"
        },
        "versioncode": {
          "type": "keyword",
          "fields": {
            "keyword": {
              "type": "keyword",
              "ignore_above": 256
            }
          }
        }
      }
    }
  },
  "aliases": {}
}

GET /tv_stats_play_dur-2019-06-05/_search/
DELETE /my_test-2019.05.10
GET /my_test-2019.05.13/_search

#query
GET /tv_stats_play_dur*/_search
{
  "query": {
    "bool": {
      "must": [
        {
          "term": {
            "root_id": 5
          }
        },
        {
          "match": {
            "sub_id": 0
          }
        }
      ],
      "must_not": [
        { "match": { "root_name": "直播" } }
      ]
    }
  }
}

#batch update or bulk update 
POST /tv_stats_play_dur*/doc/_update_by_query?conflicts=proceed
{
  "query": {
    "bool": {
      "must": [
        {
          "term": {
            "root_id": 5
          }
        },
        {
          "match": {
            "sub_id": 0
          }
        }
      ],
      "must_not": [
        {
          "match": {
            "root_name": "直播"
          }
        }
      ]
    }
  },
  "script": {
    "lang": "painless",
    "source": "ctx._source.root_name = params.live_name",
    "params": {
      "live_name": "直播"
    }
  }
}

# get count num of null root by root,main,sub
GET /tv_stats_play_dur-2019-06-07*/_search?search_type=dfs_query_then_fetch
{
  "query": {
    "bool": {
      "must_not": [
        {
          "exists": {
            "field": "root_name.keyword"
          }
        }
      ]
    }
  },
  "aggs": {
    "root_id": {
      "terms": {
        "field": "root_id",
        "size": 25
      },
      "aggs": {
        "main_id": {
          "terms": {
            "field": "main_id",
            "size": 25
          },
          "aggs": {
            "sub_id": {
              "terms": {
                "field": "sub_id",
                "size": 25
              }
            }
          }
        }
      }
    }
  }
}

#root name null group by date
GET /tv_stats_play_dur-2019-06*/_search?search_type=dfs_query_then_fetch
{
  "query": {
    "bool": {
      "must_not": [
        {
          "exists": {
            "field": "root_name.keyword"
          }
        }
      ]
    }
  },
  "aggs": {
    "root_id": {
      "terms": {
        "field": "importbatchno",
        "size": 25
      }
    }
  }
}

#search by import date 
GET /tv_stats_play_dur*/_search
{
  "query": {
    "bool": {
      "must": [
        {
          "term": {
            "importbatchno": 20190610
          }
        }
      ]
    }
  }
}

#delete by import date
POST /tv_stats_play_dur*/doc/_delete_by_query
{
  "query": {
    "bool": {
      "must": [
        {
          "term": {
            "importbatchno": 201906101
          }
        }
      ]
    }
  }
}

##########################

GET /hs_server_ahc_task*/_search
{
"query": {
"bool": {
"must": [
{
"bool": {
"should": [
{
"match": {
"LogMessage": "Error"
}
},
{
"match": {
"LogMessage": "MessagePull"
}
}
]
}
}
]
}
}
}

 

 

es同个字段,多个值搜索的案例

 类似 a_field like '%wordA%' and a_field like  '%wordB%' 
search_pdf_query = {"query": {
            "bool":
                {
                "must": [
                            {"bool": {"should":[{"match_phrase": {"pdf_title":"年度报告"}},{"match_phrase":{"pdf_title":"季度报告"}}]}}, {"range": {"announce_date": {"gte": "2017-01-01","lte": "2018-12-31"}}}, {"terms": {"html_status": ["201", "300", "301", "302"]}}, {"terms": {"trade_code.keyword": ["600548","000548"]}}], "must_not": [{"wildcard": {"origin_title.keyword": '*摘要'}},{"wildcard": {"origin_title.keyword": '*年度报告书'}}], }}, "sort": [{"announce_date": "asc"}] } 

查找值包含某些文本的情况:

  1. 完全匹配情况下,对同一个字段的多个值搜索,使用terms查询,举例:
    {"terms": {"html_status": ["201", "300", "301", "302"]}}
  2. 如果不完全匹配,则在must里添加bool查询,再在bool里添加should查询,举例:
    {"bool": {"should":[{"match_phrase": {"pdf_title":"年度报告"}},{"match_phrase":{"pdf_title":"季度报告"}}]}}

如何区分使用match,match_phrase,term可参考此篇
https://blog.csdn.net/camelcanoe/article/details/79544155
这里也涉及到查询的字段是否是 NOT_ANALYZED,ANALYZED字段无法使用term,只能使用match_phrase。
所以在新建index的时候需要把mapping设置好,哪些字段是ANALYZED,哪些是NOT_ANALYZED(感觉是个坑)

转载于:https://www.cnblogs.com/bigben0123/p/10975329.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Elasticsearch 查询语句可以使用 Query DSL 进行构建。以下是一些常见的查询语句示例: 1. 匹配查询:用于匹配一个特定字段中的值。 ``` GET /_search { "query": { "match": { "title": "elasticsearch" } } } ``` 2. 短语查询:用于匹配一个特定字段中的短语。 ``` GET /_search { "query": { "match_phrase": { "title": "elasticsearch tutorial" } } } ``` 3. 范围查询:用于匹配一个特定字段中的数值范围。 ``` GET /_search { "query": { "range": { "age": { "gte": 18, "lte": 30 } } } } ``` 4. 布尔查询:用于组合多个查询条件。 ``` GET /_search { "query": { "bool": { "must": [ { "match": { "title": "elasticsearch" } }, { "match": { "description": "tutorial" } } ] } } } ``` 5. 聚合查询:用于对结果进行聚合计算。 ``` GET /_search { "aggs": { "avg_age": { "avg": { "field": "age" } } } } ``` 以上仅是一些常见的查询语句示例,Elasticsearch 还支持许多其他类型的查询。请参阅官方文档以了解更多信息。 ### 回答2: Elasticsearch 是一个开源的分布式搜索和分析引擎,它提供了强大的查询功能来检索和分析大量的数据。 Elasticsearch 查询语句可以使用 JSON 格式来构建,主要分为两种类型:查询查询语句和过滤查询语句查询查询语句用于根据特定的条件从索引中检索文档。常见的查询类型包括匹配查询、多字段查询、范围查询和布尔查询等。匹配查询用于在指定字段中搜索指定的词语,多字段查询可以在多个字段中搜索相同的词语,范围查询支持按照范围来搜索结果,而布尔查询则可以通过逻辑运算符组合多个查询条件。 过滤查询语句用于根据特定的条件过滤文档。与查询查询语句不同的是,过滤查询不会计算相关度分数,只关心是否匹配。常见的过滤查询类型有 term 过滤、范围过滤和 bool 过滤等。term 过滤用于精确匹配一个词语,范围过滤用于按照指定范围过滤结果,bool 过滤则可以通过逻辑运算符组合多个过滤条件。 除了查询和过滤,Elasticsearch 还支持一些聚合函数(aggregations),用于对搜索结果进行统计和分析。聚合查询可以对结果集进行分组、排序、计算总和、平均值等操作,从而提供更丰富的数据分析功能。 总之,Elasticsearch 查询语句是非常灵活和强大的,可以根据不同的需求组合不同的查询和过滤条件,实现高效的数据检索和分析。 ### 回答3: Elasticsearch是一个开源的分布式搜索和分析引擎,提供了强大的查询功能。查询语句是用户用来向Elasticsearch发送请求并获取结果的指令。 Elasticsearch的查询语句可以分为两种,一种是基于URI的查询语句,另一种是基于请求体的查询语句。 基于URI的查询语句通常用于简单的查询请求,语法类似于URL。例如,要查询名为"products"的索引下的所有文档,可以使用以下查询语句: GET /products/_search 基于请求体的查询语句更为灵活,可以实现更复杂的查询功能。请求体是一个JSON对象,包含了查询的参数和条件。以下是一个常见的基于请求体的查询语句示例: POST /products/_search { "query": { "match": { "name": "手机" } } } 上述查询语句使用了"match"查询,指定了要查询的字段为"name",查询的关键词为"手机"。这将返回所有名为"手机"的文档。 此外,Elasticsearch还提供了许多其他类型的查询语句,包括布尔查询、范围查询、模糊查询等。用户可以根据需要选择合适的查询语句以实现精确的搜索结果。 总之,Elasticsearch的查询语句是通过URI或请求体来发送查询请求的指令,使用不同类型的查询语句可以实现不同的搜索功能。用户可以根据自己的需求选择合适的查询语句,并通过分析返回的结果来满足他们的搜索和分析需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值