我在弹性搜索文档中保存了一个地址:
"address": {
"streetAddress": "123 Fake street",
"city": "San Francisco",
"region": "California",
"postalCode": "94111",
"country": "United States"
},
如何使用可能包含每个不同字段的数据的输入字符串搜索索引。例如,用户可以搜索" 123 Fake street,San Francisco" - 有或没有逗号。
将标记化搜索字符串然后针对问题中的每个字段搜索每个单词是否有意义?或者以某种方式将所有5个字段连接成一个单独的地址字段并搜索它?目前我们正在使用大小为2 - 12的ngram。
我在这里问了一个关于电话号码的问题,我将所有电话号码元素连接到一个新字段: Searching phone number object in Elasticsearch with C#
但地址情况在使用方式搜索文件方面有所不同。
答案 0 :(得分:1)
如果您打算坚持使用Elastic 5一段时间,_all
field应该满足您的要求。
正如@Paige Cook在上面的评论中所指出的,_all
字段在弹性6中将是disabled by default,无法在该版本中新创建的索引上启用它。但是,它将在版本5中创建的索引上保持启用状态。
如果您在上面列出的重大更改文档中阅读了有关_all
字段的部分,则会看到对query_string
和simple_query_string
方法的引用(两者均可通过NEST库以及HTTP API弹性提供的一部分)即使_all
字段现已禁用,这两个库都将继续在所有字段中进行搜索。
希望其中一个可以解决您所面临的问题。