Ich habe Dokumente wie die unten in meinem ElasticsearchSuchabfrage in Elasticsearch
{"method":"POST","url":"/saas/services/1.0/account/*/purchase/*/subscription/cancel"}
{"method":"POST","url":"/saas/services/1.0/account/*/purchase/*/cancel"}
ich diese Dokumente am searching node.js Client. Unten ist die Abfrage, die ich sende.
Beispiel 1 Typ: DSL
client.search({
index: 'my_node',
body: {
query: {
bool: {
must: {
match: { method: 'POST' },
match: { url: '/saas/services/1.0/account/*/purchase/*/cancel' }
}
}
}
}
}
Output ich den anderen Datensatz bin immer mit Abonnement kündigen. Die Abfrage stimmt nicht mit dem exakten Dokument überein. Ich habe die folgende Abfrage ausprobiert, es funktionierte für diesen Fall, aber funktionierte nicht für einige andere Testfälle.
Dokument
{"method":"POST","url":"/paas/service/1.0/act/*/purchase"}}
{"method":"GET","url":"/paas/service/1.0/act/*/purchase"}}
{"method":"PUT","url":"/paas/service/1.0/act/*/purchase"}}
Beispiel 2 Typ: Query-String
client.search({
index: 'my_node',
q: 'method: POST AND url: /saas/services/1.0/account/*/purchase'
}
Ausgabe
ich die GET-Kaufbeleg unabhängig von anderen zwei. Für einige andere Dokumente wurde das method-Argument nicht erkannt.
Wie schreibe ich elasticsearch Abfrage, um die Dokumente zu durchsuchen, um sowohl die Eigenschaften von Methode und URL übereinzustimmen. Ich hatte versucht, Zeit für die URL zu erhöhen, aber scheint nicht zu funktionieren.
Bearbeiten - Mapping Informationen
{
"nodeclient": {
"mappings": {
"logs": {
"properties": {
"method": {
"type": "string" },
"url": {
"type": "string" }
} } }
}
}
Was ist die Zuordnung Ihrer Dokumente? Können Sie Ihre Frage mit der Ausgabe aktualisieren, die Sie von 'curl -XGET localhost erhalten: 9200/my_node/_mapping' – Val
@val Ich habe den Beitrag mit Mapping-Informationen aktualisiert. Vielen Dank !! –