Что противоположно содержит в Elasticsearch? - PullRequest
0 голосов
/ 21 апреля 2020

Какой запрос я могу использовать в Elasticsearch, чтобы найти / отфильтровать что-то, что не содержит некоторое значение / текст?

Возможно ли это в Elasticsearch?

Ответы [ 2 ]

0 голосов
/ 21 апреля 2020

Вы можете использовать логический запрос, рекомендованный elasti c, и он поддерживает must_not и определение которого из этого официального do c равно . Пожалуйста, обратитесь к предупреждению о строке запроса, почему это не рекомендуется .

Предложение (запрос) не должно появляться в соответствующих документах. Предложения выполняются в контексте фильтра, что означает, что оценка игнорируется, а предложения рассматриваются для кэширования. Поскольку оценка игнорируется, возвращается оценка 0 для всех документов.

Вы также можете включить это в контекст фильтра , который кешируется по умолчанию и обеспечивает большое преимущество в производительности:

Больше от официального do c, который включает информацию о параметре must_not

Контекст фильтра действует всякий раз, когда условие запроса передается параметру фильтра, такие как параметры фильтра или must_not в запросе bool, параметр фильтра в запросе constant_score или агрегация фильтра.

Пример примера

Индекс def

{
    "mappings" :{
        "properties" : {
            "my_filter" : { --> not created for `must_not` filter
                "type" : "keyword"
            }
        }
    }
}

Индекс образцов документов

{
  "my_filter" : "foo"
}
{
  "my_filter" : "bar"
}

Поисковый запрос, отфильтровывающий foo

{
    "query": {
        "bool": {
            "must_not": {. --> this will execute in filter context, hence will be cached 
                "term": {
                    "my_filter": "foo"
                }
            }
        }
    }
}

И результат поиска

 "hits": [
            {
                "_index": "partial",
                "_type": "_doc",
                "_id": "2",
                "_score": 0.0,
                "_source": {. --> not `foo` is removed.
                    "my_filter": "bar"
                }
            }
        ]
0 голосов
/ 21 апреля 2020

Отменить строку запроса частичное совпадение и все готово.

{
  "query": {
    "bool": {
      "must_not": [
        {
          "query_string": {
            "query": "field:value"
          }
        }
      ]
    }
  }
}
...