как выполнить поле запроса, не равное 0 в elasticsearch

#jquery #elasticsearch

#jquery #elasticsearch

Вопрос:

я работаю над эластичным поиском, я хочу выполнить запрос в документе о том, что «alarmStatus» НЕ РАВЕН 0, я выполнил следующий код

»’

 {
  "query": {
    "bool": {
      "must_not":{
        "term": {
            "alarmStatus": 0
                }
            
      },
      "filter": {
        "match": {
          "type": "meterdata"
        }
      }
    }
  }
}
  

»’

и он не выполняет функцию not equal, любая помощь, заранее спасибо

вот результат запроса, который я получил (я показываю только один, поскольку у меня есть 8k ..)

  "hits": {
        "total": {
            "value": 8067,
            "relation": "eq"
        },
        "max_score": 0.0,
        "hits": [
            {
                "_index": "test",
                "_type": "meter",
                "_id": "7Hiii3QBSliyJ__J2921",
                "_score": 0.0,
                "_source": {
                    "header": {
                        "meterId": 12345,
                        "manufId": 2367,
                        "meterType": 7,
                        "swVersion": 4,
                        "dataCtrl": 123,
                        "accessNum": 179,
                        "alarmStatus": 0,
                        "dataConfig": 0
                    },                     
                }
            },
  

Комментарии:

1. Запрос выглядит корректно. Можете ли вы поделиться своим сопоставлением индексов и образцом документа, который вы хотите сопоставить?

2. извините, что такое сопоставление индексов? я новичок в ES,…. @Val

Ответ №1:

Вы можете использовать GET mapping API, т.е. GET /{{index-name}}/_mapping для получения определения сопоставления для индекса.

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

Добавление рабочего примера с индексными данными, поисковым запросом и результатом поиска

Индексировать данные:

 {
  "header": {
    "meterId": 12345,
    "manufId": 2367,
    "meterType": 7,
    "swVersion": 4,
    "dataCtrl": 123,
    "accessNum": 179,
    "alarmStatus": 0,
    "dataConfig": 0
  }
}
 {
      "header": {
        "meterId": 12345,
        "manufId": 2367,
        "meterType": 7,
        "swVersion": 4,
        "dataCtrl": 123,
        "accessNum": 179,
        "alarmStatus": 1,
        "dataConfig": 0
      }
    }
  

Поисковый запрос:

 {
  "query": {
    "bool": {
      "must_not": {
        "term": {
          "header.alarmStatus": 0
        }
      }
    }
  }
}
  

Результат поиска:

 "hits": [
      {
        "_index": "64763634",
        "_type": "_doc",
        "_id": "2",
        "_score": 0.0,
        "_source": {
          "header": {
            "meterId": 12345,
            "manufId": 2367,
            "meterType": 7,
            "swVersion": 4,
            "dataCtrl": 123,
            "accessNum": 179,
            "alarmStatus": 1,
            "dataConfig": 0
          }
        }
      }
    ]
  

Комментарии:

1. Что он делал не так?