2017-09-14 102 views
0

我尝试对人指数(按姓氏和名字)搜索,这部分非常简单:elasticsearch 5:搜索与排除

GET /my_index/persons/search 
{ 
    "query": { 
     "query_string": { 
      "query" : "john doe" 
     } 
    } 
} 

此外,我要排除有此人具体的ID,我试着用filter条款,但我无法正确形成查询,你们可以帮我吗?


编辑

我已经试过

{ 
    "query":{ 
     "multi_match":{ 
      "query":"anne mirande", 
      "fields":[ 
       "first_name", 
       "last_name" 
      ], 
      "type":"cross_fields", 
      "operator":"and" 
     } 
    }, 
    "filter":{ 
     "not":{ 
      "term":{ 
       "id":1 
      } 
     } 
    } 
} 

但将是这样的:在[过滤器]的START_OBJECT 未知的关键。

+0

'filter'应该在'query bool'里面。请参阅:https://www.elastic.co/guide/en/elasticsearch/reference/current/query-filter-context.html –

回答

1

你可以使用这样的东西。

GET /my_index/persons/search 
{ 
    "query": { 
    "bool": { 
     "must": [ 
     {"term": { 
      "name": { 
      "value": "john doe" 
      } 
     }} 
     ], 
     "must_not": [ 
     {"term": { 
      "_id": { 
      "value": "1" 
      } 
     }} 
     ] 
    } 
    } 
} 
+0

完美,这对我有效,我想我有问题,因为我使用elastic5 – Senorihl

+0

越新越好! –