【发布时间】:2020-06-03 06:41:30
【问题描述】:
我对 elasticsearch 比较陌生,并且一直在 python 中使用 elasticsearch。我所拥有的是 csv 格式的人们数据,我已将其转换为 json 并添加到 elasticsearch 索引中。 字段如下:
'Last Name (Legal Name)',
'First Name',
'Middle Name',
'Other Last Name',
'Business Mailing Address City Name',
'Business Mailing Address State Name',
'Business Practice Location Address City Name',
'Business Practice Location Address State Name',
'Authorized Official Last Name',
'Authorized Official First Name',
'Authorized Official Middle Name',
'Authorized Official Title or Position'
我想在查询中输入类似“Name City”的内容。例如,“克林顿亚当斯汉密尔顿”,其中克林顿亚当斯是名字,汉密尔顿是城市。在大多数情况下,我不确定哪个是名字或哪个是最后一个,所以我需要从所有字段中进行匹配。
我现在使用的是这样的:
"query":{
"query_string":{
"fields": ['Last Name (Legal Name)', 'First Name', 'Middle Name',
'Other Last Name', 'Business Mailing Address City Name',
'Business Mailing Address State Name',
'Business Practice Location Address City Name', 'Business Practice
Location Address State Name',
'Authorized Official Last Name', 'Authorized Official First Name',
'Authorized Official Middle Name',
'Authorized Official Title or Position'],
"query": "(Clinton) AND (Adams) AND (Hamilton)",
}
}
如果我从数据库中搜索确切的名称和城市,则以下查询可以正常工作,但如果名称中有拼写错误,或者某个名称中的名字缩写,则不会给出预期的结果。例如,如果查询类似于“Clinton A Hamilton”,它不会与任何文档匹配。我不能使用ORoperator,因为有多个名字相似的人,所以查询的所有部分——名字/姓氏和城市都很重要。我希望查询从索引中获取最相关的记录。
我尽力解释情况。无论如何,请随时询问是否有任何不清楚的地方。感谢您的建议。谢谢。
【问题讨论】:
-
您好,我不知道您为什么要包含所有字段,而您想要考虑的只是人名和城市名称。
-
@glenacota 好吧,我明白城市和名称可以作为不同的查询进行查询,可能使用
bool运算符。您能建议在那之后继续前进的好方法吗?
标签: elasticsearch elastic-stack querydsl elasticsearch-dsl