【问题标题】:Searching across multiple address fields in Elasticsearch在 Elasticsearch 中跨多个地址字段进行搜索
【发布时间】:2017-09-13 18:34:49
【问题描述】:

我有一个地址保存在 elasticsearch 文档中,格式为:

       "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#

但地址情况在用户如何搜索文件方面有所不同。

【问题讨论】:

标签: c# elasticsearch nest


【解决方案1】:

如果您打算暂时使用 Elastic 5,_all field 应该可以满足您的要求。

正如@Paige Cook 在上面的 cmets 中指出的那样,_all 字段在 Elastic 6 中将是 disabled by default,无法在该版本中新创建的索引上启用它。但是,它将在版本 5 中创建的索引上保持启用状态。

如果您阅读了上面列出的重大更改文档中有关 _all 字段的部分,您将看到对 query_stringsimple_query_string 方法的引用(两者都可以通过 NEST 库以及HTTP API 弹性提供)两者都将继续搜索所有字段,即使 _all 字段现在已禁用。

希望其中之一可以解决您面临的问题。

【讨论】:

  • 谢谢。当我们迁移到 ES 6 时,我将继续使用 _all 并重构。
猜你喜欢
  • 1970-01-01
  • 2015-04-13
  • 1970-01-01
  • 2017-06-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-22
  • 1970-01-01
相关资源
最近更新 更多