本文共 2998 字,大约阅读时间需要 9 分钟。
在Elasticsearch中添加文档可以通过PUT请求实现。以下是添加用户数据的示例:
PUT /latte2/user/1{ "name": "latte", "age": 23, "desc": "干", "tags": ["技术","海贼王"]} 同样,可以添加其他用户数据:
PUT /latte2/user/2{ "name": "张三", "age": 28, "desc": "法外狂徒", "tags": ["旅游", "渣男", "交友"]} 使用GET请求可以获取文档数据。以下是获取单个用户数据的示例:
GET latte2/user/1
如果需要搜索特定关键字,可以使用q参数:
GET latte2/user/_search?q=name:latte
PUT请求可以用于文档更新,但需要注意以下几点:
POST:对于更新操作,建议使用POST请求,尤其是当只需要更新部分字段时。以下是使用POST更新文档的示例:
POST latte2/user/1/_update{ "name": "new_name"} 使用GET请求加上_search路径即可实现简单搜索:
GET latte2/user/_search{ "query": { "match": { "name": "latte2" } }} 支持多种操作,如排序、分页、高亮查询等。以下是分页和排序的示例:
GET latte2/user/_search{ "query": { "match": { "name": "latte2" } }, "sort": [ { "age": "asc" } ], "from": 0, "size": 2} must(与,and):所有条件都必须满足should(或,or):至少满足一个条件must_not(非,not):所有条件都不满足以下是多条件查询的示例:
GET latte2/user/_search{ "query": { "bool": { "must": [ { "match": { "name": "latte2" } }, { "match": { "age": 23 } } ] } }} 可以通过filter子查询进行过滤。以下是高于某个年龄的过滤查询:
GET latte2/user/_search{ "query": { "bool": { "must": [ { "match": { "name": "latte2" } } ], "filter": [ { "range": { "age": { "gt": 27 } } } ] } }} text**类型:支持分词,会自动解析文本keyword**类型:不支持分词,精准匹配以下是创建映射关系的示例:
PUT /latte3/mappings{ "properties": { "name": { "type": "text" }, "desc": { "type": "keyword" } }} 可以通过term子查询进行多值匹配:
GET latte3/_search{ "query": { "bool": { "should": [ { "term": { "t1": "22" } }, { "term": { "t1": "33" } } ] } }} 可以通过highlight参数实现高亮显示:
GET latte2/user/_search{ "query": { "match": { "name": "latte2" } }, "highlight": { "pre_tags": "",
"post_tags": "", "fields": { "name": {} } }} text类型会进行分词处理,而keyword类型则不会term查询直接利用倒排索引进行精准匹配通过以上操作,您可以对Elasticsearch进行基本的文档管理和搜索操作。
转载地址:http://yzkaz.baihongyu.com/