java中ElasticSearch多值查询
时间: 2024-05-03 22:22:23 浏览: 81
Java操作Elasticsearch
在Elasticsearch中,可以使用bool查询和terms查询来进行多值查询。
bool查询是一种组合查询,可以将多个查询条件组合在一起,并且可以通过must、should、must_not这三个子句来控制查询条件的组合方式。例如,以下查询将匹配字段“tags”中包含“tag1”和“tag2”的文档:
```
POST my_index/_search
{
"query": {
"bool": {
"must": [
{ "match": { "tags": "tag1" }},
{ "match": { "tags": "tag2" }}
]
}
}
}
```
terms查询用于查询字段中包含多个指定值的文档。例如,以下查询将匹配字段“tags”中包含“tag1”、“tag2”、“tag3”的文档:
```
POST my_index/_search
{
"query": {
"terms": {
"tags": [ "tag1", "tag2", "tag3" ]
}
}
}
```
还可以将bool查询和terms查询组合使用,以获得更复杂的查询条件。例如,以下查询将匹配字段“tags”中包含“tag1”、“tag2”、“tag3”,并且字段“status”等于“published”的文档:
```
POST my_index/_search
{
"query": {
"bool": {
"must": [
{ "terms": { "tags": [ "tag1", "tag2", "tag3" ]}},
{ "match": { "status": "published" }}
]
}
}
}
```
阅读全文