elasticsearch查mapping时如何按字段类型筛选查看
时间: 2023-08-11 13:28:15 浏览: 171
要按字段类型筛选查看 Elasticsearch 的 Mapping,可以使用 Mapping API 中的 `properties` 参数,并在其中指定要查看的字段类型。
具体操作如下:
1. 发送以下 GET 请求以获取索引的 Mapping:
```bash
GET /<index>/_mapping
```
2. 在响应中,找到 `mappings` 字段,它包含了索引的 Mapping 信息。
3. 在 Mapping 信息中,查找 `properties` 字段。它是一个包含了所有字段的对象,每个字段都是一个键值对。
4. 根据需要,筛选出指定类型的字段。比如,想查看所有类型为 `text` 的字段,可以使用以下查询:
```bash
GET /<index>/_mapping?include_type_name=true&properties=field1,field2.text,field3.text.*
```
上述查询中:
- `include_type_name=true` 参数表示在字段名中包含类型名称。
- `properties` 参数指定了要查看的字段列表,其中 `field1` 是默认类型(即未指定类型)的字段,`field2.text` 表示类型为 `text` 的 `field2` 字段,`field3.text.*` 表示类型为 `text` 的 `field3` 字段下的所有子字段。
返回结果中,只包含指定类型的字段。
希望这个回答能够帮到你!
相关问题
帮我写一个ES DSL查询语句,可以根据下面这个mapping进行查询 "202109": { "properties": { "date": { "type": "date" }, "target_name": { "type": "text" }, "sensitive_type": { "type": "long" }, "target_id": { "type": "keyword" }, "source": { "type": "keyword" }, "content": { "type": "text" }, "target_path": { "type": "text" }, "from_user": { "type": "text" }, "conversation_type": { "type": "long" }, "uid": { "type": "keyword" }, "conversation_id": { "type": "keyword" }, "object_name": { "type": "keyword" }, "from_user_path": { "type": "text" }, "conversation": { "type": "text" }, "from_user_id": { "type": "keyword" } } } 要求根据data进行范围,并且要筛选出object_name为RC:TxtMsg,content中存储的JSON结构中包含一个key为content字段,模糊查询这个json中content里包含123的数据,
根据你提供的mapping,我为你编写了一个符合要求的ES DSL查询语句。以下是示例:
```json
{
"query": {
"bool": {
"must": [
{
"range": {
"date": {
"gte": "起始日期",
"lte": "结束日期"
}
}
},
{
"term": {
"object_name": "RC:TxtMsg"
}
},
{
"wildcard": {
"content.keyword": "*123*"
}
}
]
}
}
}
```
请将"起始日期"和"结束日期"替换为你想要的实际日期范围。这个查询使用了布尔查询的"must"子句,确保所有条件都必须匹配。"range"查询用于根据日期范围筛选数据,"term"查询用于匹配"object_name"字段为"RC:TxtMsg",而"wildcard"查询用于模糊匹配包含"123"的内容。
希望这能满足你的需求!如果你还有其他问题,请随时提问。
阅读全文