我有3个文件,
{
"category":[{"id":"1"},{"id":"2"},{"id":"3"}]
}
{
"category":[{"id":"1"},{"id":"4"}]
}
{
"category":[]
}
如何在(2,3)中找到像mysql一样具有category.id的文档, 我还需要在java api querybuilder中使用哪种类型的DSL查询
答案 0 :(得分:1)
您可以使用带有should子句的bool查询来查找包含所请求的任何ID的所有文档。以下是Query DSL的使用方式
{
"query": {
"bool": {
"should": [
{"term": {
"category.id": {
"value": "2"
}
}},
{"term": {
"category.id": {
"value": "3"
}
}
}
]
}
}
}
以下是使用Java API的方法
QueryBuilders.boolQuery().should(QueryBuilders.matchQuery("category.id", "2"))
.should(QueryBuilders.matchQuery("category.id", "1"));
如果未分析id字段,您还可以使用术语查询。更多信息https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-terms-query.html
答案 1 :(得分:0)
以下是查询的外观:
{
"query": {
"bool": {
"filter": [
{
"term": {
"category.id": "1"
}
},
{
"term": {
"category.id": "2"
}
}
]
}
}
}
答案 2 :(得分:0)
像这样:
{
"filter": {
"terms": {
"category.id": ["2", "3"]
}
}
}