Elasticsearch.net - запрос диапазона - PullRequest
0 голосов
/ 19 декабря 2018

Я пытаюсь запросить индекс Elasticsearch из C # через Elasticsearch.net (не NEST).В частности, мне нужно получить все документы со статусом «успех», которые были созданы с определенной даты.В попытке сделать это у меня есть:

var query = new {
  query = new {
    match = new {
      field="status",
      query="success"
    }
  },

  range = new {
    ?
  }
};

Я не уверен, что использовать для части range.На самом деле, я даже не уверен, что мой синтаксис для query правильный.Я не очень понимаю, как синтаксис C # отображается на Query DSL в Elasticsearch.Любая помощь приветствуется.

Спасибо!

Ответы [ 3 ]

0 голосов
/ 22 декабря 2018

Я не совсем понимаю, как синтаксис C # отображается в Query DSL в Elasticsearch.

Рассматривая приведенный пример, я предполагаю, что вы хотите использовать PosData.Serializable(query).В этом случае объект запроса (независимо от его типа) будет сериализован в формате JSON и размещен в кластере эластичного поиска без каких-либо изменений.При создании объекта с использованием синтаксиса new {} C # он по умолчанию сериализуется в JSON с теми же ключами, что и свойства этого объекта.Таким образом, объект

new {
    query = new {
        bool = new {
            must = new {
                term = new {
                    status = "success"
                }
            },
            filter = new {
                range = new {
                    date = new { gte = "2018-12-22T00:00:00.000Z" }
                }
            }
        }
    }
}

будет сериализован и передан вasticsearch как

"query": {
    "bool": {
        "must": {
            "term": {
                  "status": "success"
            }
        },
        "filter": {
            "range": {
               "date": { "gte": "2018-12-22T00:00:00.000Z" }
            }
        }
    }
}

Таким образом, с помощью низкоуровневого клиента Elasticsearch вы создаете объекты, которые имеют почти 1: 1 отображениеСинтаксис запроса DSL.Вы можете скопировать примеры изastic.co, заменить ":" на "= new", удалить кавычки из имен свойств и, в основном, вот и все.

0 голосов
/ 27 декабря 2018

Запрос будет выглядеть так:

var query = new {
  bool = new {
    must = new {
      match = new {
        field = "status",
        query = "success"
      }
    },
    filter = new {
      range = new {
        createDate = new {
          gte = "2018-01-01T00:00:00.000Z",
          lt = "2019-01-01T00:00:00.000Z"
        }
      }
    }
  }
};
0 голосов
/ 22 декабря 2018

Примерно так должно поступить:

var query = new {
  bool = new {
    must = new {
      match = new {
        field = "status",
        query = "success"
      }
    },
    filter = new {
      range = new {
        createDate = new {
          gt = "2018-12-01T00:00:00.000Z"
        }
      }
    }
  }
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...