/ / Търсене на масив в elastsearch - java, elastsearch

Изследване на масив в еластична селекция - java, elasticsearch

Имам 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"]
}
}
}