Elasticsearch对文档的查询操作
查询文档中个字段的含义:
“-index”: 表示在那个索引(相当于数据库中位于那个库)
“-type”: 表示是那个类型(相当于数据库中位于哪个表)
“-id”: 记录的ID
“-version”: 版本号
“-seq_no”: 并发控制字段,每次更新就会加一,用来做乐观锁
“-primary_term”: 同上。主分片重新分配,如重启就会变化
“-found”: 表示是否找到数据查询文档中个字段的含义
“-source”:真正查找的内容
更新文档:
POST更新会对比原来的数据,如果一样版本号就不会发生变化,seq_no也不变
Put和不带_update的POST都会直接更新
Put和不带_update的POST也是可以的
删除文档&索引
批量操作:必须是POST请求
测试:
批量操作每条记录都是独立统计,上一条记录的失败不会影响下一条记录的进行
测试数据:
两种查询数据方式:
示例:
match既可以做精确查询(查询字段非字符串)也可以做模糊匹配
分词匹配:全文检索按照评分进行排序,会对检索条件进行分词匹配,能按照评分排序是得益于倒排索引。
短语匹配:
多字段匹配:进行分词匹配
复合查询:
must:必须符合某个条件
must_not:必须不是XXX
should:满足条件最好得分就会更高,不满足也没有关系
结果过滤:
示例:
过滤和匹配的区别就是是否对相关性得分有贡献。
term:全文检索的字段(地址等)不推荐使用,精确的字段可以使用(年龄等)
keyword是精确匹配,match_phrase是模糊匹配