2016-01-16 4 views
1

я хотел бы получить различные IP-адресов, например, сегодня и где = Кампания «2» в SQL: выбрать отличный IP из теста , где метка времени> = «2016-01-16» ... И fk_campaign_id = "2";Elasticsearch несколько запросов

Это работает, но выходы проверки json «Дублирующий ключ, имена должны быть уникальными».

{ 
    "size":0, 
    "aggs":{ 
     "distinct_ip":{ 
     "cardinality":{ 
      "field":"ip" 
     } 
     } 
    }, 
    "query":{ 
     "range":{ 
     "timestamp":{ 
      "gte":"2016-01-16T00:00:00", 
      "lt":"2016-01-17T00:00:00" 
     } 
     } 
    }, 
    "query":{ 
     "match":{ 
     "fk_campaign_id":"2" 
     } 
    } 
} 

Но если я пытаюсь построить этот запрос в PHP, var_dump ($ Params) возвращает меня обратно JSON только с одним «запросом», может быть из-за ключом Дублированного ???

{ 
    "size":0, 
    "aggs":{ 
     "distinct_ip":{ 
     "cardinality":{ 
      "field":"ip" 
     } 
     } 
    }, 

часть с диапазоном нет здесь?!?!?

"query":{ 
     "match":{ 
     "fk_campaign_id":"2" 
     } 
    } 
} 

Заранее благодарен.

ответ

1

В вашем json query находится дубликат ключа. Вы должны использовать bool query всякий раз, когда у вас есть несколько условий. так как у вас есть И условие, которое вам нужно использовать must clause. Это правильный синтаксис

{ 
    "query": { 
    "bool": { 
     "must": [ 
     { 
      "range": { 
      "timestamp": { 
       "gte": "2016-01-16T00:00:00", 
       "lt": "2016-01-17T00:00:00" 
      } 
      } 
     }, 
     { 
      "match": { 
      "fk_campaign_id": "2" 
      } 
     } 
     ] 
    } 
    }, 
    "size": 0, 
    "aggs": { 
    "distinct_ip": { 
     "cardinality": { 
     "field": "ip" 
     } 
    } 
    } 
} 

Надеюсь, это поможет!

+0

ChintanShah25 !!! Mega Спасибо за отличную ПОМОЩЬ - это действительно помогло мне –

+0

рад, что я мог бы помочь! – ChintanShah25

+0

Не могли бы вы порекомендовать любую литературу для Elasticsearch? Танки –

Смежные вопросы