Elasticsearch之基本API操作
Elasticsearch之基本API操作
索引操作
创建索引:使用PUT请求,http://localhost:9200/ + 索引名称
创建索引的映射:PUT, http://localhost:9200/+索引名称+/_mapping
1 | { |
查询映射:GET, http://localhost:9200/+索引名称+/_mapping
删除索引:使用DELETE请求,http://localhost:9200/ + 索引名称
获取索引:使用GET请求,http://localhost:9200/ + 索引名称
获取所有索引:使用GET请求,http://localhost:9200/_cat/indices?v
索引映射创建后不允许修改,但允许添加新字段的索引映射
数据操作
上传数据:使用POST请求,http://localhost:9200/ + 索引名称 + /_doc (+/3 指定数据的id,不加则使用默认生成的id),此处需要注意:如果增加数据时明确数据主键,那么请求方式也可以为 PUT
删除数据:使用delete请求,http://localhost:9200/+ 索引名称 +/_doc/+ 数据的id
获取单条数据:使用GET请求,http://localhost:9200/+ 索引名称 +/_doc/+ 数据的id
获取索引下的所有数据:使用GET请求,http://localhost:9200/+ 索引名称 +/_search
修改数据:若要修改所有数据,跟上传数据一样,会自动覆盖之前的数据;若只修改部分数据,使用POST请求,http://localhost:9200/ + 索引名称 + /_update/+ id 文件格式为:
1 | { |
带参查询:URL带参,GET请求,http://localhost:9200/+索引名称+/_search/q=键名:值
请求体带参,GET请求,http://localhost:9200/+索引名称+/_search,附带JSON请求体:
1 | 查找符合条件的数据: |
elasticsearch中的相关性打分算法
- TF-IDF:在elasticsearch5.0之前使用,会随着词频增加而越来越大
- BM25:在elasticsearch5.0之后使用,会随着词频增加而增大,但增长曲线会趋于水平
Function Score Query
使用Function Score Query可以修改文档的相关性算分(query score),根据新得到的算分排序。
Function Score Query定义的三要素是什么?
- 过滤条件:哪些文档要加分
- 算分函数:如何计算function score
- 加权方式:function score与query score如何运算
复合查询Boolean Query
布尔查询是一个或多个查询子句的组合,子查询的组合方式有:
- must:必须匹配每个子查询,类似 与
- should:选择性匹配子查询,类似 或
- must_not:必须不匹配,不参与算分,类似 非
- filter:必须匹配,不参与算分
自定义分词器
elasticsearch中分词器(analyzer)的组成包含三部分:
- character filters:在tokenizer之前对文本进行处理。例如删除字符、替换字符
- tokenizer:将文本按照一定的规则切割成词条(term)。例如keyword,就是不分词;还有ik_smart
- tokenizer filter:将tokenizer输出的词条做进一步处理。例如大小写转换、同义词处理、拼音处理等
为了避免搜索时搜到同音字,应在创建索引时使用拼音分词器,但搜索时不应使用拼音分词器。