我是ElasticSearch的新手,我有以下格式的数据:
{
"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
或name
或office.name
的一部分的用户,如下所示:
{
"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
搜索查询的ElasticSearch如下:
{
"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"
}
}
1条答案
按热度按时间olqngx591#
这是一个多匹配查询的作业,请尝试以下操作: