Elasti c Поиск: поиск по нескольким терминам в одном запросе - PullRequest
1 голос
/ 28 февраля 2020

Новое в ElasticSearch.

У меня есть документы по index: myindex в Elasti c Поиск с сопоставлениями: http://host: порт / myindex / _mapping

{
"mappings":{
   "properties": {
        "en_US":  {
             "type": "keyword"
                  }
                 }
          }
}

Скажем, мои 3 документа выглядят следующим образом:

{
"product": "p1",
"subproduct": "p1.1"
}

{
"product": "p1",
"subproduct": "p1.2"
}

{
"product": "p2",
"subproduct": "p2.1"
}

Теперь я запрашиваю использование для одного подпродукта p1.1 с продуктом p1, как показано ниже, и работает нормально:

POST: http://host: port / myindex / _search

{
  "query": {
    "bool" : {
      "must" : {
        "term" : { "product" : "p1" }
      },
      "filter": {
        "term" : { "subproduct" : "p1.1" }
      }
    }
  }
}

У меня вопрос : Как я могу запросить 2 или более субпродукты в одном запросе _search, например, suproducts p1.1 и p1.2 в product p1? Запрос должен возвращать список всех субпродуктов p1.1 и субпродуктов p1.2 с p1 product.

1 Ответ

0 голосов
/ 28 февраля 2020

Просто измените запрос term в предложении фильтра на запрос terms и выполните поиск по нескольким терминам.

{
  "query": {
    "bool" : {
      "must" : {
        "term" : { "product" : "p1" }
      },
      "filter": {
        "terms" : { "subproduct" : ["p1.1", "p1.2"] }
      }
    }
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...