Puncte:0

Cum să transmiteți valori pentru a interoga extern

drapel ng
abc

Am mai jos jurnale similare.

Am creat manechin index și creat cartografiere ca mai jos în instrumente de dezvoltare

Pune nou
{
  „mappings”: {
    „proprietăți”: {
      "@timestamp-ul": {
        "tip": "data",
        „format”: „aaaa-LL-zz HH:mm:ss.SSS”
      }
    }
  }
}

și indexate date ca mai jos,

PUT /new/_doc/1
{
  „@timestamp”: „2021-11-05 08:12:14.534”,
  "nivel": "INFO",
  "id": "1",
  "text": "site-ul web este accesat",
  „status”: „s-a făcut clic”
}

PUT /new/_doc/2
{
  „@timestamp”: „2021-10-14 09:11:14.534”,
  "nivel": "INFO",
  "id": "3",
  "text": "site-ul web este accesat",
  „status”: „s-a făcut clic”
}

PUT /new/_doc/3
{
  „@timestamp”: „2021-09-09 02:08:20.534”,
  "nivel": "INFO",
  "id": "4",
  "text": "site-ul web este accesat",
  „status”: „s-a făcut clic”
}

Pot obține numărul total folosind mai jos cerere interogare,

GET nou/_căutare
{
  „aggs”: {},
  "dimensiune": 0,
  "câmpuri": [],
  „interogare”: {
    „bool”: {
      "trebuie sa": [],
      "filtru": [
        {
          „bool”: {
            "ar trebui să": [
              {
                „match_phrase”: {
                  "text": "site-ul web este accesat"
                }
              }
            ],
            „minimum_should_match”: 1
          }
        },
        {
          "gamă": {
            "@timestamp-ul": {
              "gte": "2021-10-01",
              "lte": "2021-10-30"
            }
          }
        }
      ],
      "ar trebui să": [],
      "nu trebuie să": []
    }
  }
}

Primind raspuns ca mai jos,

{
  "a luat": 0,
  "timed_out": fals,
  „_shards” : {
    "total": 1,
    "de succes": 1,
    „sărit”: 0,
    „eșuat”: 0
  },
  „hituri” : {
    „total” : {
      „valoare”: 1,
      „relație”: „echivalent”
    },
    „max_score”: nul,
    "hituri": [ ]
  }
}

După cum vezi, trebuie cod greu cel Data pentru a prelua valoarea pentru un anume lună adică pentru a prelua aceleași informații pentru sept lună, trebuie să modific interval de date și oră ca mai jos în cererea de bucle,

"gamă": {
  "@timestamp-ul": {
    "gte": "2021-09-01",
    "lte": "2021-09-30"
    }
    }

Mai jos este cerere de apel curl.

curl -u elastic:xxx -XGET „http://10.10.10.10:9200/new/_search?pretty” -H „Content-Type: application/json” -d”
{
  „aggs”: {},
  "dimensiune": 0,
  "câmpuri": [],
  „interogare”: {
    „bool”: {
      "trebuie sa": [],
      "filtru": [
        {
          „bool”: {
            "ar trebui să": [
              {
                „match_phrase”: {
                  "text": "site-ul web este accesat"
                }
              }
            ],
            „minimum_should_match”: 1
          }
        },
        {
          "gamă": {
            "@timestamp-ul": {
              "gte": "2021-10-01",
              "lte": "2021-10-30"
            }
          }
        }
      ],
      "ar trebui să": [],
      "nu trebuie să": []
    }
  }
}'

Cum pot trece an și lună dinamic (adică fără a codifica efectiv cererea în sine) la cererea curl care va prelua informațiile pentru acel anume lună, an?


Actualizați -

Pot obține rezultatele pentru luna trecută (noiembrie) sau ultimele 2 luni (oct.) și așa mai departe folosind mai jos,

luna trecuta - nov -

"gte": "acum-M",
"lt": "acum/M"

2 luni - oct

"gte": "acum-2M/M",
"lte": "acum-2M/M"

Dar există o modalitate de a oferi dorit an și lună pentru a recupera rezultate?

Mulțumiri,

Puncte:0
drapel ng

Poți să folosești matematica data cu date complet definite:

"gamă": {
  "@timestamp-ul": {
    "gte": "2021-10-01",
    „lte”: „2021-10-01||+1M/zi”
  }
}
abc avatar
drapel ng
abc
Mulțumesc Ok, dar din nou în acest caz, cererea de curl unică nu poate fi utilizată, adică pentru fiecare lună nouă pentru a obține datele lunii trecute, trebuie să schimb marcajul de timp în cererea de curl, adică pentru luna curentă decembrie, dacă trebuie să aduc datele pentru noiembrie, apoi trebuie să schimb `luna` în marcajul de timp și același lucru va trebui să fac când ianuarie va fi luna curentă și trebuie să preiau datele pentru luna decembrie. În curând trebuie să schimb și anul. deci asta nu este bine. Nu vreau să creez cereri de curl separate pentru fiecare lună, de aceea caut, dacă pot trece anul și luna nu printr-un mod hardcoded?
drapel ng
Cum rulezi acel „curl”? Dacă este un script bash, puteți folosi scriptul bash: `YEAR=2010; LUNA=10; curl ... "interval": { "@timestamp": { "gte": "$YEAR-$MONTH-01", "lte": "$YEAR-$MONTH-01||+1M/zi" } } `?
abc avatar
drapel ng
abc
Am rulat curl așa cum este, adică exact în același mod pe care l-am lipit mai sus (fără script-ul bash etc..), dar da, includerea acestui curl în script-ul bash și furnizarea de an și luna ca variabilă poate fi o opțiune bună. Voi încerca asta. Mulțumiri

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.