Queryasticsearch как запрос термина с несколькими терминами с AND и OR - PullRequest
0 голосов
/ 03 ноября 2018

У меня есть сценарий, в котором я хочу получить результаты из эластичного элемента, который имеет любой из следующих текстов:

  1. "Samsung S8"
  2. "Silverado"
  3. "диски"
  4. "Пинг-понг"

Как можно увидеть здесь, "samsung s8 /" пинг-понг "являются биграммами и должны иметь логическую схему И, потому что я хочу оба этих термина.

Есть ли способ достичь этого? Прямо сейчас я формирую такой упругий запрос, который, очевидно, является неправильным, поскольку он может дать результат с "s8", но не с "samsung".

"must": [
        {
          "query_string": {
            "query": "samsung s8 silverado rims ping pong",
            "fields": [
              "category^1.0",
              "description^1.0",
              "keywords.*^0.0",
              "title^1.0"
            ],
            "use_dis_max": true,
            "tie_breaker": 0,
            "default_operator": "or",
            "auto_generate_phrase_queries": false,
            "max_determinized_states": 10000,
            "enable_position_increments": true,
            "fuzziness": "AUTO",
            "fuzzy_prefix_length": 0,
            "fuzzy_max_expansions": 50,
            "phrase_slop": 0,
            "escape": false,
            "split_on_whitespace": true,
            "boost": 1
          }
        }
      ],
...