2016-05-19 2 views
0

мне удалось построить запрос, которыйDeep Elasticsearch подстановочные запрос для заданного интервала времени и с оператором И

  • матчи все точные значения в заданном диапазоне времени
  • поддерживает and оператора.

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

Mapping

"event": { 
    "properties": { 
     "alarmId": { 
      "type": "string", 
      "index": "not_analyzed" 
     }, 
     "startTimestamp": { 
      "type": "long" 
     }, 
     ... 
    } 
} 

Текущий запрос

{ 
    "bool": { 
     "must":[ 
      {"range": {"endTimestamp": {"gte": ?0}}}, 
      {"range": {"startTimestamp": {"lte": ?1}}} 
     ], 
     "should": [ 
      {"match": {"_all": {"query": "?2", "zero_terms_query": "all", "operator": "and"}}} 
     ], 
     "minimum_should_match" : 1 
    } 
} 
+1

Этот ответ должен помочь: http://stackoverflow.com/questions/37315275/elasticsearch-search-for-parts-of-words – Val

+0

@Val Интересно, это может сработать, но почему в запросе есть точки? '' * '. $ val.' * ' – rebeliagamer

+1

Это оператор конкатенации строк в PHP :) В вашем случае это не применяется, просто используйте' 'whatever *" ' – Val

ответ

0

Ответ (благодаря Val)

{ 
    "bool": { 
     "must":[ 
      {"range": {"endTimestamp": {"gte": ?0}}}, 
      {"range": {"startTimestamp": {"lte": ?1}}} 
     ], 
     "should": [ 
      {"query_string": {"query": "?2"}}" 
     ], 
     "minimum_should_match" : 1 
    } 
} 

Теперь поддерживаются запросы grouping, wildcards и more.