Есть ли возможность минимизировать этот эластичный поиск, который не должен соответствовать запросу? - PullRequest
1 голос
/ 23 сентября 2019

Я стараюсь избегать некоторого текста из поля, и для этого я не должен использовать условия, но, похоже, что он статический, и занял больше строк.Поэтому, пожалуйста, дайте мне знать, есть ли другая опция для оптимизации этого запроса.

Вот запрос,

"must_not": [
    {
    "match": {
    "field.keyword": "welcome"
        }
    },
    {
    "match": {
    "field.keyword": "Welcome"
        }    
    },
    {
    "match": {
    "field.keyword": "entry_point"
        }
    },
    {
    "match": {
    "field.keyword": "Entry point"
        }
    }
    ]

Спасибо,

Ответы [ 2 ]

2 голосов
/ 23 сентября 2019

Если текст для поиска одинаков, вы можете использовать multi-match , который будет искать текст в нескольких полях

"bool": {
      "must_not": [
        {
         "multi_match": {
           "query": "text",
           "fields": ["field1.keyword","field2.keyword"]
         }
        }
      ]
    }

Если поле одинаковое и тексты разные, вы можете использоватьусловия запроса

"must_not": [
        {
          "terms": {
            "field.keyword": [
              "VALUE1",
              "VALUE2"
            ]
          }
        }
      ]

Если поля и тексты отличаются, вам придется использовать запрос в своем вопросе.

1 голос
/ 23 сентября 2019

Как вы сказали, что вы не ищете точное совпадение, я бы просто использовал строку запроса для отдельных слов и совпадение фразы для фраз.

"must_not": [
    { 
       "query_string": {
            "query": "welcome OR Welcome"
        }
    },
    {
       "match_phrase": {
          "title": {
             "query": "entry point",
          }
       }
   }
 ]

Я не уверен, какой анализатор вы используете, но если вы используете только строчные + буквенно-цифровые символы, например, вам не нужно иметь «дублирующие» запросы, такие как «welcome» и «Welcome».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...