我是弹性搜索的新手,我有以下格式的数据:
{
"person_name" : "Abraham Benjamin deVilliers",
"name": "Abraham",
"office":{
"name":"my_office"
}
},
{
"person_name" : "John Bradshaw",
"name": "john",
"office": {
"name":"Abraham deVilliers"
}
},
{
"person_name" : "John Bradshaw",
"name": "Abraham deVilliers",
"office": {
"name":"blabla"
}
},
{
"person_name" : "John Bradshaw",
"name": "Abraham",
"office": {
"name":"deVilliers"
}
},
{
"person_name" : "Abraham",
"name": "deVilliers",
"office": {
"name":"blabla"
}
}
我正在搜索查询字符串有三个字段匹配person_name
,name
并且office.name
,它应该通过检查用户输入的查询字段如下返回响应:
如果输入的查询字符串为Abraham deVilliers
,则它应返回具有Abraham
和或作为deVilliers
其person_name
orname
或office.name
as的一部分的用户,如下所示:
{
"person_name" : "Abraham Benjamin deVilliers",
"name": "Abraham",
"office":{
"name":"my_office"
}
},
{
"person_name" : "John Bradshaw",
"name": "john",
"office": {
"name":"Abraham deVilliers"
}
},
{
"person_name" : "John Bradshaw",
"name": "Abraham deVilliers",
"office": {
"name":"blabla"
}
}
我已经尝试过query_string
弹性搜索的搜索查询,如下所示:
{
"query": {
"query_string":
{ "fields": ["person_name", "name", "office.name"],
"query": "Abraham AND deVilliers"
}
}
}
搜索查询返回预期的结果,但它也返回响应匹配first_name: Abraham
来自name
与last_name: deVilliers
从office.name
,我不想要的。
我想从query_string
查询返回中排除以下配置文件
{
"person_name" : "John Bradshaw",
"name": "Abraham",
"office": {
"name":"deVilliers"
}
},
{
"person_name" : "Abraham",
"name": "deVilliers",
"office": {
"name":"blabla"
}
}
这是一项用于多匹配查询的工作,请尝试如下操作:
GET <index_name>/_search?explain=true
{
"query": {
"multi_match" : {
"query": "Abraham deVilliers",
"type": "best_fields",
"fields": [ "person_name", "name", "office.name" ],
"operator":"and"
}
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句