2015-11-30 53 views
4

我有数据的索引在ElasticSearchElasticSearch查询与查询输入

{ 
    "name":"john", 
    "type":"main", 
    "address":"26, pression road, next to maha maul, Atlanta, USA", 
    "description":"i am from atlanta. i a need of help on elastic search. my name is john wosniak" 
}, 
{ 
    "name":"shailesh", 
    "type":"other", 
    "address":"c-401, greenfield road, next to cyber city, mumbai, india", 
    "description":"i am from mumbai. i dont need. my name shailesh" 
}, 
{ 
    "name":"pratik", 
    "type":"main", 
    "address":"c-116, parmar society, john main road, andhari, India", 
    "description":"i am from andhari. i a need of help on elastic search. my name is pratik doshi, i am good friend of john" 
},... 

我想用一些事先查询,使得其在所有领域的其他搜索"type":"main""john"进行搜索。

现在我使用的查询

{ 
    "query_string" : { 
     "fields" : ["name", "type","address", "description"], 
     "query" : "main john*" 
    } 
} 

它没有给我想要的结果按我的要求。

希望我已经说清楚了。我在这里先向您的帮助表示感谢。

回答

1

您是否看过bool query

可以达到预期的结果与boosting

{ 
    "query": { 
    "bool": { 
     "should": [ 
     { 
      "match": { 
      "type": { 
       "query": "main", 
       "boost": 10 
      } 
      } 
     }, 
     { 
      "multi_match": { 
      "query": "john", 
      "fields": [ 
       "name", 
       "address", 
       "description" 
      ] 
      } 
     } 
     ] 
    } 
    } 
} 
+0

你的答案能正常工作的我的要求之一。只是一个快速的升级。对于不同类型的需求,我无法通过布尔查询找到/制作合适的解决方案。我需要在顶部有“type”:“main”的所有结果,并根据“multi_match”将它全部放在它下面:{query}“john”,'。你能帮助我吗? – dhpratik

+0

你是否希望两个条件都是真的或者只是这两个条件中的任何一个?基本上你的要求是**和**或**或**? – ChintanShah25

+0

'OR'条件但是''type“:”main“'结果应该在最上面 – dhpratik