es查询一个字段多个值
时间: 2024-09-29 11:12:26 浏览: 36
完美解决distinct中使用多个字段的方法
在Elasticsearch(ES)查询中,如果你想要搜索文档中包含特定字段的多个值,你可以使用`bool`查询中的`should`或`must`子句结合`term`、`match`、`in`等条件。这里有几个示例:
1. **使用`should`子句**:当你需要满足任何一个条件时,可以使用`should`。例如,查询包含"value1"或"value2"的文档:
```json
{
"query": {
"bool": {
"should": [
{"term": { "field": "value1" }},
{"term": { "field": "value2" }}
]
}
}
}
```
2. **使用`in`操作符**:如果你想查包含列表中所有值的文档,可以这样写:
```json
{
"query": {
"term": {
"field": {
"values": ["value1", "value2"]
}
}
}
}
```
这里假设`field`是一个允许数组值的字段。
3. **使用`nested`查询**:如果`field`的值是一个嵌套的对象,且你想查询其中某个属性的多个值,可以使用`nested`查询:
```json
{
"query": {
"nested": {
"path": "field",
"query": {
"bool": {
"should": [
{"term": { "field.property": "value1" }},
{"term": { "field.property": "value2" }}
]
}
}
}
}
}
```
这里假设`field.property`是你想要搜索的具体路径。
阅读全文