【问题标题】:elasticsearch- comparing different indexed documentselasticsearch - 比较不同的索引文档
【发布时间】:2016-02-13 01:16:35
【问题描述】:

我是 elasticsearch 新手,不太清楚如何正确使用它。 我有以下问题。我想索引不同的文档和 检查它们是否包含某些搜索词。有不止一个 百万文本和大约一万个搜索词。

我的想法是同时索引 texs 和 serach 术语,所以我有 类似的东西: http://localhost:9200/text/type/id http://localhost:9200/searchterm/type/id

我没有找到任何解决方案如何加入这两个索引。所以我想 我的想法走错了方向。

谁能帮我解决这个问题?如果您需要更多信息,我会尝试 把它给你,但目前是在最开始,所以有 不多说了。我真的很感谢你的帮助,坦克你!

【问题讨论】:

    标签: elasticsearch


    【解决方案1】:

    您可以为此使用术语查找机制。

    在文档 'http://www.HOSTNAME:9200/searchterm/type/id' 中,您可以创建一个名为 'searchTerms' 的字段并将搜索词存储在其中。

    类似

    searchterm/type/id
      {
        "searchTerms" : [ "search" , "me" , "and" , "this" , "term" , "Also" ]
      }
    

    完成后,您可以在过滤后的查询中参考此文档。

    curl -XGET www.HOSTNAME:9200/text/_search -d '{
      "query" : {
        "filtered" : {
          "filter" : {
            "terms" : {
              "user" : {
                "index" : "searchterm",
                "type" : "type",
                "id" : "id",
                "path" : "searchTerms"
              }
            }
          }
        }
      }
    }'
    

    这样,您可以参考其他文档中的术语进行过滤。

    链接-http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/query-dsl-terms-filter.html#_terms_lookup_mechanism

    【讨论】:

    • 非常感谢您的帮助。这是我秃头需要的开始。我试过了,效果很好。我想我可以在 searchTerms 数组中添加替代拼写之类的东西?
    • 是的,这样就可以了。但更好的方法是使用同义词分析器来执行此操作。
    • 是的,但对于我的具体情况(很多技术术语和释义),默认情况下,这样的分析器不会分发所有需要的同义词。也许如果我做了一些补充......也许我会在以后尝试。对于我的实际问题,我有可能只用一个请求就遍历所有搜索词,还是每个文本必须发出数万个请求?
    猜你喜欢
    • 1970-01-01
    • 2018-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-03
    • 1970-01-01
    相关资源
    最近更新 更多