2015-08-25 3 views
2

Следующий запрос возвращает хиты:В ElasticSearch, как совместить `span_near` и` term`?

{ 
    "query": { 
    "span_near": { 
     "clauses": [ 
     { 
      "span_term": { 
      "file.contents": "charstreams" 
      } 
     } 
     ], 
     "slop": 0, 
     "in_order": true 
    } 
    } 
} 

Так делает следующее:

{ 
    "query": { 
    "filtered": { 
     "filter": { 
     "term": { 
      "file.extension": "java" 
     } 
     } 
    } 
    } 
} 

Что запрос, который сочетает в себе два таких, что оба условия выполнены?

ответ

1
{ 
    "query": { 
    "filtered": { 
     "query": { 
     "span_near": { 
      "clauses": [ 
      { 
       "span_term": { 
       "file.contents": "charstreams" 
       } 
      } 
      ], 
      "slop": 0, 
      "in_order": true 
     } 
     }, 
     "filter": { 
     "term": { 
      "file.extension": "java" 
     } 
     } 
    } 
    } 
} 

Кроме того, поскольку вы устанавливаете slop в 0 и in_order к true, вы можете рассмотреть возможность использования https://www.elastic.co/guide/en/elasticsearch/guide/current/phrase-matching.html вместо этого.