Поиск по метке времени, созданной на лету вasticsearch

Иногда с помощью персонажей, которые вы указали, возможно простое экранирование. Например, использование обратной косой черты для выхода из скобки не будет работать в левой части строки подстановки в sed, а именно

sed -e 's/foo\(bar/something_else/'

. Я просто использую простое определение класса символов вместо , поэтому вышеприведенное выражение становится

sed -e 's/foo[(]bar/something_else/'

, которое я нахожу для большинства реализаций регекса.

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

Изменить: после комментария ниже, просто подумал, что я бы упомянул о том, что вам также нужно учитывать разницу между автоматами конечного состояния и автоматами не конечного состояния при просмотре поведение оценки regexp.

Возможно, вам захочется взглянуть на «блестящую книгу с шаром», а также на эффективную Perl ( санированную ссылку Amazon ), в частности главу о регулярных выражениях, чтобы получить почувствуйте тогда разницу в типах оценки двигателя regexp.

Не все в мире PCRE!

В любом случае, регулярные выражения настолько неуклюжи по сравнению с SNOBOL ! Теперь это был интересный курс программирования! Наряду с тем, что на Simula .

Ах, радости изучения в UNSW в конце 70-х! (-:

0
задан J.Doe 17 January 2019 в 17:10
поделиться

1 ответ

Вы должны быть в состоянии сделать это, используя Script Query . Это позволило бы вам создать объект даты, используя значения полей, а затем сравнить эту дату с текущей датой.

Условный пример

{
  "query": {
    "bool" : {
      "filter" : {
        "script" : {
          "script" : {
            "params": {
              "monthRange": 6
            },
            "source": """
              def today = new Date();
              def timestamp = new Date(doc['timestamp']['year'].value, doc['timestamp']['monthValue'].value, doc['timestamp']['dayValue'].value);

              /* Date comparison magic (I don't know Java, so you're on your own here) */

              /* return result of comparison */
            """,
            "lang": "painless"
          }
        }
      }
    }
  }
}

Я использовал Безболезненно только один раз, поэтому я недостаточно знаком, чтобы дать идеальный ответ. Но это может помочь вам начать. Если вы застряли, просто задайте другой вопрос, относящийся к вашей проблеме, и тот, кто более знаком с Java / Painless, может вам помочь.

0
ответ дан dmbaughman 17 January 2019 в 17:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: