当前位置: 首页 > 面试题库 >

Elasticsearch:为Java客户端构建映射

董翰池
2023-03-14
问题内容

在我的elasticsearch.yml文件中,我尝试实现一些映射,其中使用不同的分析器将属于一种类型的一个字段索引到其余字段。

目前,yaml文件具有以下结构:

index:
  bookshelf:
    types:
      book:
        mappings:
          title: {analyzer: customAnalyzer}
  analysis:
    analyzer:
      # set standard analyzer with no stop words as the default
      default:
        type: standard
        stopwords: _none_
      # set custom analyser to provide relative search results
      customAnalyzer:
        type: custom
        tokenizer: nGramTokenizer
        filter: [lowercase,stopWordsFilter,asciifolding]
    tokenizer:
      nGramTokenizer:
        type: nGram
        min_gram: 1
        max_gram: 2
    filter:
      nGramFilter:
        type: nGram
        min_gram: 1
        max_gram: 2
      stopWordsFilter:
        type: stop
        stopwords: _none_

这不会将自定义分析器应用于标题字段,因此我希望有人可以为我指出将自定义分析器应用于各个字段的正确方向?


问题答案:

我在ml中回答了这个问题:

如果您使用的是Java,则不必使用yml文件。您可以,但不必。

如果您使用的是Spring,则可以查看ES spring工厂项目:https : //github.com/dadoonet/spring-
elasticsearch

如果不是这样,则可以使用不同的方法在Java中创建索引和映射:

  1. 您可以在这里看看json映射文件,以了解我的工作方式:https : //github.com/dadoonet/spring-elasticsearch/blob/master/src/main/java/fr/pilato/spring /elasticsearch/ElasticsearchAbstractClientFactoryBean.java#L616

  2. 您还可以使用ES提供的XContent对象在Java中构建映射:https : //github.com/dadoonet/rssriver/blob/master/src/test/java/org/elasticsearch/river/rss/RssRiverTest.java# L14

  3. 这里描述了使用此对象:https : //github.com/dadoonet/rssriver/blob/master/src/test/java/org/elasticsearch/river/rss/AbstractRssRiverTest.java#L98

添加映射如下:

node .client() .admin () .indices()
 .preparePutMapping ("yourindex" )
 .setType ( "yourtype" )
 .setSource ( mapping ())
 .execute() .actionGet ();

希望对您有帮助



 类似资料:
  • 我正在尝试重建一个与elasticsearch 2.4对话的插件,以便与elasticsearch 5配合使用。 代码来自:https://github.com/pentaho/pentaho-kettle/blob/master/plugins/elasticsearch-bulk-insert/src/org/pentaho/di/trans/steps/elasticsearchbulk/E

  • 我想运行以下java代码: 我用以下命令运行mon神: 默认配置下的Elasticsearch 每次运行程序时,我都会遇到以下错误:

  • 上下文 最近,我开始使用Xamarin开发一个移动项目,它与C#/一起工作。NET.我来自开发Android应用和Java开发。当我在应用程序中构建超文本传输协议客户端时,我总是使用相同的方案。只有在必要的时候,我才喜欢压倒一切的概念。我想将JavaRESTful超文本传输协议客户端转换为C#/。NET RESTful超文本传输协议客户端。 我想要一个如下所示的API: 我面临的主要问题是,我不确

  • 从Java使用弹性搜索的最佳实践是什么?例如,可以使用REST API轻松找到留档和逐个查询删除功能的示例。传输客户端Java情况并非如此。 在哪里可以找到Java Transport Client的使用示例 Java Transport Client是否通过REST API覆盖了整个ElasticSearch功能,比如HTTP客户端

  • 我正在尝试创建一个类,该类将通过Rest高级客户机自动写入ElasticSearch,并执行操作(create、createBatch、remove、removeBatch、update、updateBatch),这些操作都正常工作,我的测试用例都成功。为了增加一点灵活性,我想实现以下方法:(find、findAll、getFirsts(n)、getLasts(n))。find(key)和find

  • 问题内容: 我正在尝试从Java连接到ElasticSearch,但只能通过HTTP连接。我不能使用。ElasticSearch REST API周围是否有Java客户端包装?如果可以,该如何使用? 问题答案: 嗨,有一个全新的项目正好满足您的需求。基于Java的RestAPI for Elasticsearch 看看这个!它的名字是JEST