Имам 3 документа,
{
"category":[{"id":"1"},{"id":"2"},{"id":"3"}]
}
{
"category":[{"id":"1"},{"id":"4"}]
}
{
"category":[]
}
Как мога да намеря документ, който има category.id в (2,3) като mysql, също кой тип DSL заявка трябва да използвам в Java api querybuilder
Отговори:
1 за отговор № 1Можете да използвате заявката за bool с, ако трябва клауза, за да намерите всички документи, които съдържат някой от исканите идентификатори. Ето как би искал 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
0 за отговор № 2
Ето как трябва да изглежда заявката ви:
{
"query": {
"bool": {
"filter": [
{
"term": {
"category.id": "1"
}
},
{
"term": {
"category.id": "2"
}
}
]
}
}
}
0 за отговор № 3
Като този:
{
"filter": {
"terms": {
"category.id": ["2", "3"]
}
}
}