Mam ogromne dane klientów zapisane w elastycznej wyszukiwaniu

Moje zapytanie jest poniżej

{"query": {"query_string": {"query": "Mobile"}}}

  • Pytanie 1

Muszę filtrować {country: Germany}

"filter": [ { "term": { "Country.keyword": "Germany" }}]

  • pytanie 2

Muszę filtrować

{country: Germany} i {continent:Europe}

0
Maws 9 październik 2020, 13:18

1 odpowiedź

Najlepsza odpowiedź

Dodanie działającego przykładu z danymi indeksu, zapytaniem wyszukiwania i wynikiem wyszukiwania

{
  "item":"mobile are essential",
  "Country":"India",
  "continent":"Europe"
}
{
  "item":"mobile",
  "Country":"Germany",
  "continent":"Europe"
}
{
  "item":"mobile",
  "Country":"Germany",
  "continent":"asia"
}

W przypadku pierwszego pytania, need to filter out {country: Germany}, musisz owinąć zapytanie w zapytanie Bool:

{
      "query": {
        "bool": {
          "must": {
            "query_string": {
              "query": "Mobile"
            }
          },
          "filter": {
            "term": {
              "Country.keyword": "Germany"
            }
          }
        }
      }
    }

Wynik wyszukiwania:

"hits": [
      {
        "_index": "stof_64278091",
        "_type": "_doc",
        "_id": "1",
        "_score": 0.15965708,
        "_source": {
          "item": "mobile",
          "Country": "Germany",
          "continent": "Europe"
        }
      },
      {
        "_index": "stof_64278091",
        "_type": "_doc",
        "_id": "3",
        "_score": 0.15965708,
        "_source": {
          "item": "mobile",
          "Country": "Germany",
          "continent": "asia"
        }
      }
    ]

Na drugie pytanie wypróbuj ten zapytanie:

{
  "query": {
    "bool": {
      "must": {
        "query_string": {
          "query": "Mobile"
        }
      },
      "filter": [
        {
          "term": {
            "Country.keyword": "Germany"
          }
        },
        {
          "term": {
            "continent": "Europe"
          }
        }
      ]
    }
  }
}

Wynik wyszukiwania:

"hits": [
      {
        "_index": "stof_64278091",
        "_type": "_doc",
        "_id": "1",
        "_score": 0.22920428,
        "_source": {
          "item": "mobile",
          "Country": "Germany",
          "continent": "Europe"
        }
      }
    ]
0
ESCoder 9 październik 2020, 10:33